2013-08-27 1 views
0

J'ai 3 tables, commentaires, utilisateurs et images.rails de niveau multiple inclure sur l'association imbriquée

J'essaye de formuler une requête qui produira des tableaux de commentaires sur un article qui inclut les informations du commentateur et un avatar.

L'avatar est stocké dans la table des images, tandis que la table des utilisateurs contient les informations de l'utilisateur plus un ID de référence à l'objet image qui stocke l'avatar de l'utilisateur.

Chaque commentaire a un ID auteur référençant un objet dans la table utilisateur.

C'est ce que j'ai jusqu'à présent

@comments = Comment.all(:include => [:user => :images], 
      :conditions => { 
       :source => p[:source], 
       :source_id => p[:id], 
       :users => {:id => p[:user_id]}, /* if this result is *user */ 
       :images => {????} /*essentially i need images.id = *user.profile_id */ 
       }) 

Impossible d'obtenir la partie de l'image au travail, quelqu'un peut-il me montrer comment?

+0

le code du modèle, si votre les associations de modèles sont justes, vous devriez être en mesure de faire @comments = User.find (: id) .comments – beck03076

+0

classe 'l'utilisateur

+0

Un utilisateur ne devrait-il pas avoir un seul avatar? Une raison pour laquelle un utilisateur a has_many' images? – depa

Répondre

2

C'est ce que je viens de faire marcher à la fin

class User < ActiveRecord::Base 
    belongs_to :image, :foreign_key => "profile_id" 

class Image < ActiveRecord::Base 
    has_one :user 

class Comment < ActiveRecord::Base 
    belongs_to :user 

@comments = Comment.all(:include => [{:user => :image}, :like, :flag], 
      :conditions => { 
       ... 
       }) 

Cela fonctionne, mais si quelqu'un peut me dire si c'est la bonne façon de le faire, il serait grand poste

+0

Pourquoi n'utiliserions-nous pas la méthode '.includes'? – ahnbizcad

Questions connexes