我有一个Users
模型与has_many :comments
每个评论记录current_user
到commenter
列。如何从子表中获取信息
如何在我的视图中调用@ commenter.username并显示评论者的用户名?
目前在comments_controller中使用:@commenter = User.find("2")
会拉出正确的信息。我想用线沿线的东西:@commenter = User.find_by_id(:commenter)
我有一个Users
模型与has_many :comments
每个评论记录current_user
到commenter
列。如何从子表中获取信息
如何在我的视图中调用@ commenter.username并显示评论者的用户名?
目前在comments_controller中使用:@commenter = User.find("2")
会拉出正确的信息。我想用线沿线的东西:@commenter = User.find_by_id(:commenter)
从评论,这听起来像你有这样的Comment
型号:
class Comment < ActiveRecord::Base
belongs_to :user
end
注释模型代表了用户的页面,其中上评论用户模型定义为:
class User < ActiveRecord::Base
has_many :comments
end
还有在comments
表来存储谁张贴该评论的用户(在OTH一个commenter
列呃用户的页面)。
首先,我会建议使用commenter_id
这个列而不是commenter
,因为这是存储任何类型的ID的惯例。
假设你对comments
表commenter_id
列,那么您需要定义一个秒关系如下:
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
只要您设置您的列名和模型正确,处理获取信息这应该是很简单的。
这工作,但没有@符号,只是'comment.commenter。用户名' – aidiah
很高兴听到! –
你能否提供一些实际的代码(例如模型代码)?真的很难理解你的模型关系看起来像读这个。 –
你的数据库模式也会有所帮助。我不明白你为什么使用'commenter'作为你的列名,标准格式对'belongs_to'关系是'user_id'。 –
@ChrisSalzberg对不起,我正在使用user_id将评论与用户页面相匹配,评论者仅针对发布评论的用户。此外,除了belongs_to/has_many之外,还没有关于评论的模型代码 – aidiah