2010-12-05 4 views
0

J'utilise Rail 3 et je trouve qu'il est très difficile de faire une jointure de deux tables ET d'avoir accès aux données des deux dans la vue. Je n'ai accès qu'à l'un des deux. Quel est le problème avec le code ci-dessous? Comment devrait-il ressembler?Impossible d'obtenir les données des deux tables dans une requête de jointure en utilisant Rails 3

S'il vous plaît noter que j'utilise Rails 3.

@contacts = Profile.where("profiles.id = ?", @profile).includes(:contacts).order("lastname ASC") 

J'ai aussi essayé quelque chose comme ça

@contacts = Profile.joins('LEFT OUTER JOIN contacts ON contacts.friend_id = profiles.id').where("profiles.firstname LIKE :input OR profiles.lastname LIKE :input",{:input => "#{params[:keyword]}%"}).where("contacts.profile_id = #{params[:profile_id]}") 

Répondre

1

Il vous manque la méthode de sélection

Voir cette solution question: Rails 3 - select with Include? Cela fonctionne de façon similaire avec un JOIN, vous permettant de sélectionner des champs dans les deux tables, mais les résultats seront dans un objet Profile avec des champs Contact en tant que colonnes virtuelles.

Questions connexes