Arrière-plan
Rails normale désireux de chargement des collections fonctionne comme ceci:
Person.find(:all, :include=>:companies)
Cela génère une certaine sql qui ne
LEFT OUTER JOIN companies ON people.company_id = companies.id
Question
Cependant, j'ai besoin d'un custom rejoindre (ce qui peut aussi survenir si j'ai été en utilisant find_by_sql
) donc je ne peux pas utiliser de la vanille en :include => :companies
La coutume se joindre/sql va me faire de toutes les données dont j'ai besoin, mais comment puis-je savoir activerecord qu'il appartient à l'associated Company
objets plutôt que d'être simplement un tas de lignes supplémentaires?
Mise à jour
J'ai besoin de mettre des conditions supplémentaires à la jointure. Quelque chose comme ceci:
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