0

我为我的评论设置了多态关联设置。它似乎终于可以正常工作并正确保存所有数据。不过,我无法通过这种关系来提取评论者的姓名。

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

我的评论数据库中的数据是正确的。Commenter 对应于 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:commenter是 ' 列的外键User,则:id需要在Comment模型中定义此关系

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 回答