我有一个Users
模型has_many :comments
每条评论都会将current_user
记录到commenter
列。
如何在我的视图中调用@ commenter.username并显示评论者的用户名?
目前在comments_controller中使用:@commenter = User.find("2")
将提取正确的信息。我想使用以下内容:@commenter = User.find_by_id(:commenter)
答案 0 :(得分:1)
从评论中,听起来你有这个Comment
模型:
class Comment < ActiveRecord::Base
belongs_to :user
end
评论模型代表用户页面上的评论,其中用户模型定义为:
class User < ActiveRecord::Base
has_many :comments
end
commenter
表格上还有一个comments
列,用于存储发布评论的用户(在另一个用户的页面上)。
首先,我建议使用commenter_id
作为此列,而不是commenter
,因为这是存储任何类型的ID的惯例。
假设您在commenter_id
表上有一个comments
列,那么您将按如下方式定义第二个关系:
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :commenter, class_name: "User", foreign_key: :commenter_id
end
commenter
关系定义撰写评论的用户,而不是评论所在页面的用户。
对于此关系的另一方,请更新您的User
模型:
class User < ActiveRecord::Base
has_many :comments
has_many :page_comments, class_name: "Comment", foreign_key: :commenter_id
end
此处,page_comments
定义了此用户在其他用户的网页上发布的评论。
然后,如果你有一个@comment
,你可以简单地得到评论者的名字:
@comment.commenter.name
只要您正确设置列名和模型,处理获取此类信息应该非常简单。