我有这种多态关联,用户可以有很多评论,学校可以有很多评论,评论可以有很多评论(或在我的命名案例回复中):
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:通过关联不会像它对用户和学校模型的工作方式那样起作用。
答案 0 :(得分:0)
使用此:
has_many :reply_commentors, :through => :replies, :source => :commentor