быстрый вопрос. Я пытаюсь создать область без успеха. У меня есть эти моделиRails scope on association association
class User < ActiveRecord::Base
belongs_to :store, required: true
has_many :visits
has_one :company, through: :store
end
class Store < ActiveRecord::Base
belongs_to :company, required: true
has_many :users, dependent: :nullify
end
class Company < ActiveRecord::Base
has_many :stores, dependent: :destroy
has_many :users, through: :stores
end
class Visit < ActiveRecord::Base
belongs_to :user
end
редактировать
Теперь мне нужно сделать некоторые диаграммы, используя Chartkick Gem и лучший способ, чтобы начать с посещения модели.
Я использую
Visit.group_by_day("started_at", range: 3.month.ago.midnight..Date.today.midnight, format: "%b %-e").order("day asc").count
Если мне нужно все визиты, но теперь мне нужно также фильтровать визиты для компании, так и для магазина.
Я не могу понять, как я могу получить все посещения от пользователей, принадлежащих определенному магазину или конкретной компании.
Самый простой способ:
Visit.where("user_id IN (?)", company.users.ids)
Это работает, но я prefear написать лучший охват и тот, что я пишу не работает.
class Visit < ActiveRecord::Base
belongs_to :user
scope :user_by_store, ->(store_id) {
joins(:user).where('user.store_id' => store_id)
}
end