背景
正常的 rails 急切加载集合的工作方式如下:
Person.find(:all, :include=>:companies)
这会生成一些 sql
LEFT OUTER JOIN companies ON people.company_id = companies.id
问题
但是,我需要一个自定义连接(如果我使用 也可能出现这种情况find_by_sql
)所以我不能使用香草:include => :companies
自定义 join/sql 将为我提供我需要的所有数据,但我如何告诉 activerecord 它属于关联Company
对象,而不仅仅是一堆额外的行?
更新
我需要在联接中添加其他条件。像这样的东西:
SELECT blah blah blah
LEFT OUTER JOIN companies ON people.company_id = companies.id AND people.magical_flag IS NULL
<Several other joins>
WHERE blahblahblah