我想找到有一些孩子的东西。 所以给定:
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_"开头的函数应该以"?"结尾,并且应该只返回真/假。