[英]How to get information from child table
我有一个具有has_many :comments
的Users
模型has_many :comments
每个注释都将current_user
记录到commenter
列。
如何在视图中调用@ commenter.username并显示评论者的用户名?
当前在@commenter = User.find("2")
中使用: @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
表上还有一个commenter
列,用于存储发布评论的用户(在另一个用户的页面上)。
首先,我建议对此列而不是commenter
使用commenter_id
,因为这是存储任何类型的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
只要正确设置列名和模型,处理这样的信息就应该非常简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.