2010-08-23 3 views
0

J'utilise actuellement:Comment accéder aux champs d'un autre modèle via une relation has_many?

@user = User.find(params[:id]) 
@posts = @user.posts 
@comments = @user.comments 

Pour afficher tous mes commentaires avec ce code dans mon modèle:

<% @user.comments.each do |p| %> 
    <p>Commented on <%= p.post.user_id %>'s post</p> 
    <p><%= p.body %></p> 
<% end %> 

Chaque poste a une colonne « user_id » qui est l'ID de l'utilisateur pour celui créé la poste. Je peux générer ces données 'user_id' parce que le modèle Post et le modèle User ont de nombreux commentaires, et que le modèle Comment appartient à la fois au modèle Post et au modèle User.

Je souhaite utiliser les données 'user_id' de p.post.user_id pour trouver le nom de l'utilisateur dans la table User database. Le nom de l'utilisateur se trouve dans la colonne 'nom' et l'identifiant de l'utilisateur dans la colonne 'id'. Comment puis-je utiliser p.post.user_id dans le contrôleur User pour trouver les utilisateurs avec le même identifiant afin que je puisse sortir leur nom?

Répondre

1

Si vous avez belongs_to et has_many en place, vous aurez accès à l'ensemble de l'objet utilisateur de l'objet du message:

<%= p.post.user.name %> 
+0

fonctionne parfaitement, merci! Ça m'a pris des heures pour réaliser ça ... – hohner

Questions connexes