0

私は、ユーザーが多くのコメントを持つことができ、学校が多くのコメントを持つことができ、コメントが多くのコメントを持つことができるこのポリモーフィックな関連付けを持っています (または私の名前の場合は返信):

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 では、 を使用して、ユーザーにコメントしたすべての人を取得できます@user.commentors。同じことが学校にも当てはまり@school.commentorsます。

コメント モデルについては、コメントへのすべてのコメント投稿者 (または返信者だと思います) を見つけることができるコメント モデルについても同じことを実現したいと考えています。ただし、has_many :through アソシエーションは User および School モデルの場合とは異なり、どのようなアソシエーションを作成すればよいかわかりません。

4

1 に答える 1

0

これを使って:

has_many :reply_commentors, :through => :replies, :source => :commentor
于 2012-09-13T14:16:50.327 に答える