1

私のニーズは非常に単純です。コメントを受け取るための Tip テーブルと、コメントを受け取るためのコメントもあります。

同じテーブルに格納されている各コメント (コメント) を取得するために、コメントのコメント用に別のキー "inverse_comments" を作成しました。

自己参照関連を使用して、1 つのコメント テーブルを使用しようとしました。一部のリソースは、私のニーズとは異なる複数のテーブルをピットに持ち込むようです。そこで、コメント用に次のモデリングを思いつきました。

class Comment < ActiveRecord::Base
  belongs_to :tip 
  belongs_to :user
  has_many :mycomments, 
           :through => :inverse_comments,
           :source => :comment
end

どうやらここに何かが欠けているようですが、私はそれを理解できません。誰かがこれについて私を啓発してくれますか:

モデルを機能させるには、どのような変更を行う必要がありますか?

ありがとう。

4

1 に答える 1

5

ポリモーフィックな関連付けを使用する必要があると思います。

そのためには、テーブルに acommentable_idと aを追加する必要があります。モデルは次のようになります。commentable_typecomments

class Comment < ActiveRecord::Base
   belongs_to :user
   belongs_to :commentable, :polymorphic => true    
   has_many :comments, :as => :commentable
end 

class Tip < ActiveRecord::Base 
   has_many :comments, :as => :commentable
end

このように使用できます

@tip.comments
@comment.comments
于 2010-06-12T16:15:47.837 に答える