我如何解决has_many:通过单一关联限制?

时间:2010-01-28 12:54:23

标签: ruby-on-rails orm activerecord

鉴于关系

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

如何创建从投票到评论的关联?每个审阅者可以对提案“创建投票的唯一索引(user_id,proposal_id)”进行一次投票,并且可以多次发表评论。审稿人可以发表评论,不进行投票或投票,也不进行评论,这样他们就不会对投票和评论产生依赖关系。从投票模型我希望关联匹配的许多评论(user_id,proposal_id)。这些是与审稿人对提案进行投票相关的评论。

协会

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

将收集所有评论者的评论。同样

has_many :comments, :through => :reviewer

将产生所有提案的评论。我想要上述两组评论的交集。

是否可以

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

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

这些都不奏效。解决这个问题的最佳方法是什么 - 或者我只需要阅读更多文档?

1 个答案:

答案 0 :(得分:1)

我认为你没有太多运气。我会尝试更简单的方法,只需对投票模型进行评论,例如:

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

就这样,你就可以安装了。