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