从多态注释模型中查找评论的回复者

时间:2012-09-12 06:38:46

标签: ruby-on-rails polymorphic-associations

我有这种多态关联,用户可以有很多评论,学校可以有很多评论,评论可以有很多评论(或在我的命名案例回复中):

class Comment < ActiveRecord::Base
  attr_accessible :content
  has_many :replies, :as => :commentable, :class_name => "Comment" # replies to comments

  belongs_to :commentable, :polymorphic => true
  belongs_to :commentor, :class_name => "User", :foreign_key => "user_id"
end

class User < ActiveRecord::Base
  has_many :comments, :as => :commentable
  has_many :commentors, # all users who commented on a user
    :through => :comments,
    :source => :commentor
end

class School < ActiveRecord::Base
  has_many :comments, :as => :commentable
  has_many :commentors, # all users who commented on a school
    :through => :comments,
    :source => :commentor
end

在用户中,我可以使用@user.commentors检索所有评论用户的人。同样适用于学校,即@school.commentors

对于评论模型,我想对评论模型做同样的事情,我可以在评论中找到所有评论员(或者我猜是回复者);但是,我不知道要创建什么样的关联,因为has_many:通过关联不会像它对用户和学校模型的工作方式那样起作用。

1 个答案:

答案 0 :(得分:0)

使用此:

has_many :reply_commentors, :through => :replies, :source => :commentor