繁体   English   中英

如何从子表中获取信息

[英]How to get information from child table

我有一个具有has_many :commentsUsers模型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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM