0

コメント用にポリモーフィックな関連付けを設定しました。最終的に機能し、すべてのデータを適切に保存しているようです。でも、コメンターの名前を引き出すための関係を理解することはできません。

<div class="span5">
  <%= comment.commenter.name %>
  <%= comment.body %>
</div>

コメントのデータは私のデータベースで正しいです。コメント投稿者はuser_idに対応します。

<Comment id: 9, commenter: 2, subject: nil, body: "whaa", commentable_id: 1, commentable_type: "User", created_at: "2012-09-11 14:58:36", updated_at: "2012-09-11 14:58:36">

モデルは次のとおりです。

class Comment < ActiveRecord::Base

  belongs_to :commentable, :polymorphic => true

  attr_accessible :body, :commentable_id, :commentable_type, :commenter, :subject

end


class User < ActiveRecord::Base

  has_many :comments, :as => :commentable

  accepts_nested_attributes_for :comments, :reject_if => lambda { |a| a[:body].blank? }

end

ありがとう!

4

1 に答える 1

2

Comment'sが's列の:commenter外部キーである場合、モデルでこの関係を定義する必要がありますUser:idComment

belongs_to :commenter, class_name: "User", foreign_key: :commenter

Userモデルの反対側

has_many :authored_comments, class_name: "Comment"

今、あなたはCommentsaUserが書いたすべてにアクセスすることができます

u = User.find(some_id)
u.authored_comments

(他の人が書いた可能性のある)に関連するコメントUser

u.comments

といくつかの作者Comment

c = Comment.find(some_id)
c.commenter
c.commenter.name # their :name attribute
于 2012-09-11T15:56:11.107 に答える