较新的预先加载样式使用多个查询来加载关联。是否可以为那些额外的急切加载查询添加条件? e.g。
Bakery.find(:all, :include => :bakers)
将生成类似于此的急切加载查询:
SELECT bakers
。* FROM bakers
WHERE(bakers
。bakery_id IN(1,2,3,4,5))
是否可以为此热切加载查询添加条件?
更新 为了(可能)使这个更清楚,我想用AR(sans SQL)复制的查询是:
SELECT * FROM bakeries
LEFT JOIN bakers
ON bakeries.id = bakers.bakery_id AND bakers.hat ='on'
具体来说,我希望能够将第二个急切加载的SQL语句修改为:
SELECT bakers
。* FROM bakers
WHERE(bakers
。bakery_id IN(1,2,3,4,5)AND bakers
。hat ='on' )
这可能,还是我必须使用SQL?只是寻找“Rails”方式来做到这一点。 :)
答案 0 :(得分:1)
那么,您想要在关联查询中进行哪些更改?
你当然可以这样做:
Bakery.find(:all, :include => :bakers, :conditions => ["bakers.something = ?", true])
如果我们有更多信息,可能有更好的方法来做到这一点。根据您要查找的内容,您可能需要查看可以链接在一起的named_scope
,例如:
Bakery.bakers.available
named_scope
非常整洁。