Rails3には次のものがあります:
Class Teacher
# active :boolean
has_and_belongs_to_many :subjects
Class Subject
# active :boolean
has_and_belongs_to_many :teachers
に関連付けられている、または関連付けられてTeachers
いるすべてを返す Teacher スコープを作成しようとしています。active
Subject
active
これらのスコープは個別に機能しますが、OR を使用して単一のスコープとして組み合わせるにはどうすればよいでしょうか?
scope :active_teachers, where(active: true)
scope :more_active_teachers, joins(:subjects).where(:subjects => {active: true})
私は成功せずにこれを試しました:
scope :active_teachers, where(active: true).or(joins(:subjects)
.where(:subjects => {active: true}))
アップデート:
解決策があると思っていたのですが、これはもはや遅延読み込みではなく、データベースに 2 回ヒットし、最も重要なことに、AR オブジェクトではなく配列を返します!
scope :active_teachers, where(active: true) |
joins(:subjects).where(:subjects => {active: true})