【发布时间】:2009-12-25 10:03:43
【问题描述】:
在 Rails 2.3.5 应用程序中,我有以下模型:
class Foo < ActiveRecord::Base
has_many :bars
end
class Bar < ActiveRecord::Base
belongs_to :foo
end
当我打电话时
Foo.all(:include => :bars)
我在控制台中看到以下查询:
SELECT * FROM "foos"
SELECT "bars".* FROM "bars" WHERE ("bars".foo_id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21))
在 where 子句中包含所有 foo 的 id。
我想这不是一个最佳查询,而 id 的数量可能很大,我需要预加载所有的“条”。另外,实际上我没有两个模型,而是一个链。
有没有办法让急切加载查询像
SELECT "bars".* FROM "bars"
什么时候使用 find all?
【问题讨论】:
标签: ruby-on-rails activerecord eager-loading