#sql #ruby-on-rails #ruby #activerecord
#sql #ruby-on-rails #ruby #activerecord
Вопрос:
У меня есть две таблицы: App
(с release_id
полем) и User
.
Модели
class App < ActiveRecord::Base
has_one :user
end
class User < ActiveRecord::Base
belongs_to :app
end
Класс
class Stats::AppOverview
def initialize(from:, apps:)
@from = from || Date.new(2010)
@apps = apps
end
def total_count
{ apps: { total: total_app, with_user: app_with_user } }
end
private
def app_since
@apps.where('created_at >= ?', @from)
end
def total_app
devices_since.count
end
def app_with_user
User.where(app: app_since).count
end
end
Я хотел бы вернуть
- количество
app
записей для заданного массиваrelease_id
- количество
app
записей, принадлежащих каждому пользователю, удовлетворяющих другим критериям
Вот как я использую класс
Stats::AppOverview.new(from: 1.month.ago.iso8601,
apps: App.where(release_id: [1,2,3,4,5,19,235]).total_count
#=> { apps: { total: 65, with_user: 42 } }
На данный момент я делаю это в двух запросах, но возможно ли поместить их в один и тот же запрос? Возможно ли это с помощью active record?
Комментарии:
1. Пытаюсь внести ясность здесь. Что означает »
user
связанный с числом»? Кроме того, откудаdevices_since
берется?2. @BryanH Пользователь, у
app_id
которого есть что включено в первое предложение where .3. Итак, вы ищете количество приложений, которые принадлежат данному пользователю И имеют определенные
release_id
s, верно?4. @BryanH Да, точно
5. Хорошо, я прояснил ваш вопрос. Посмотрите, имеет ли это смысл.