class Foo
has_many :bars
end
class Bar
belongs_to: foo
end
这是一个可以解决问题的任意例子。
假设任何给定的Bar
都有一个属性:age
。我正在寻找一个ActiveRecord查询,该查询仅返回 foos
仅 bars
age
为7(且不<{1}} bars
与那个条件不匹配的情况下,bars
急切加载。
我将如何做到这一点?
答案 0 :(得分:0)
有几种方法可以解决这个问题,但我认为最常见的是:
foos = Foo.includes(:bars).references(:bars).where("bars.age=7")
您也可以执行以下操作来消除连接(对于某些数据集,这可能会更快):
foos = Foo.includes(:bars).where("exists (select * from bars where foo_id=foos.id and age=7)")