2010-01-28 1 views
0

compte tenu des relationsComment est-ce que je contourne has_many: par la restriction d'association simple?

{ 
    proposals(id, ...), 
    reviewers(id, ...), 
    comments(id, user_id, proposal_id, ...), 
    votes(id, user_id, proposal_id, ...) 
} 

comment puis-je créer une association de vote à commenter? Chaque réviseur peut voter une fois sur une proposition "créer un index unique sur les votes (user_id, proposal_id)" et peut commenter plusieurs fois. Un critique peut commenter et ne pas voter ou voter et ne pas commenter, donc il n'y a pas de dépendance entre les votes et les commentaires. A partir du modèle de vote, je souhaite associer les nombreux commentaires correspondants (user_id, proposal_id). Ce sont les commentaires qui sont pertinents pour le vote d'un examinateur sur une proposition.

L'association

class Vote < ActiveRecord::Base 
    belongs_to :reviewer 
    belongs_to :proposal 
    has_many :comments, :through => :proposal 
end 

donnera des commentaires de tous les auteurs. De même

has_many :comments, :through => :reviewer 

donnera des commentaires de toutes les propositions. Je voudrais l'intersection des deux ensembles de commentaires ci-dessus.

Est-il possible de

has_many :comments, :through => [:reviewer, :proposal] 

ou

has_many :comments, :through => :reviewer, :scope => :proposal_id 

Aucune de ces travaux. Quel est le meilleur moyen de contourner ce problème - ou ai-je juste besoin de lire plus de documentation?

Répondre

1

Je ne pense pas que vous auriez beaucoup de chance avec ça. Je vais essayer quelque chose de plus simple et juste faire une méthode commentaires au modèle de vote, tels que:

def comments 
    Comment.find_all_by_proposal_id_and_user_id(self.proposal_id,self.user_id) 
end 

Et comme ça, vous seriez tous les réglages.

Questions connexes