活动记录 - 寻找父母



我想找到有一些孩子的东西。 所以给定:

class Foo < ActiveRecord::Base
   has_many :bars
   has_many :bazes
   scope :is_a_parent ...what goes here?...

我想得到任何酒吧或任何酒吧的Foos。 当然,使用原始 SQL 可以实现所有事情,exists (select 1 from bars ...) or exists (select 1 from bazes ...) ,但是 yuk。

当然,有某种方法可以将any?与 arel or 方法结合使用吗? 在不诉诸SQL的情况下,还有其他方法可以做到这一点吗?

这对

你有帮助吗? 先前的答案是寻找你的反面(没有柱线或baze的Foos),但你应该能够反转逻辑。

class Foo < ActiveRecord::Base
  has_many :bars
  has_many :bazes    
  scope :is_a_parent, (joins(:bars) or joins(:bazes)).uniq

会给你所有的 foos 有一个酒吧或一个酒吧

顺便说一句,通常以"is_"开头的函数应该以"?"结尾,并且应该只返回真/假。

最新更新