私は次のモデルがあります:ActiveRecordの親モデルから子モデルの関連付けの条件を適用する方法は?
class Staff < ApplicationRecord
has_many :seminars
end
class Seminar < ApplicationRecord
belongs_to :staff
has_many :schedules
has_many :future_schedules, -> { future }, class_name: 'Schedule'
has_many :past_schedules, -> { past }, class_name: 'Schedule'
end
class Schedule < ApplicationRecord
belongs_to :seminar
scope :future, -> { where('starts_at > ?', Time.now) }
scope :past, -> { where('ends_at > ?', Time.now) }
end
は、私は簡単に行うことができます:
- スタッフ
- セミナー
- スケジュール
の関係は単純であるseminar.future_schedules
& seminar.past_schedules
が、ここはissですue:将来的にスケジュールを持っているスタッフのためのセミナーを手に入れたいと思っています。
私が試してみました何:
has_many :future_seminars, -> { future_schedules }, class_name: 'Seminar'
しかし、問題がある:それはスコープではありませんので、私は、上記の行でfuture_schedules
を渡すことはできません。
has_many :future_seminars, -> { where('schedules.starts_at > ?', Time.now) }, class_name: 'Seminar'
しかし、それは言う:schedules.starts_at
は列ではありません、それはそうです。とにかく、includes
のようなものを使ってセミナーのためにschedules
をロードすることができますか?
yay !!できます! –