Фон
Обычные рельсы, готовые к загрузке коллекций, работают так:
Person.find(:all, :include=>:companies)
Это генерирует некоторый sql, который делает
LEFT OUTER JOIN companies ON people.company_id = companies.id
Вопрос
Однако мне нужно пользовательское объединение (это также может возникнуть, если я использую find_by_sql
), поэтому я не могу использовать ваниль :include => :companies
Пользовательское объединение / 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