【发布时间】:2023-03-10 20:16:01
【问题描述】:
我有一个 Posts 模型,它属于我的 Rails API 存储库中的 User 模型。 我在 Posts 表中添加了一个列,即“用户名”。 我想将 current_user.name 添加到用户名列中的每个帖子。
我可以使用委托将创建帖子名称的用户添加到我的帖子表的用户名列中吗?
我已经添加了 user_id 作为参考。
class Post < ActiveRecord::Base
belongs_to :user
def as_json(options={})
super(only: [:description, :created_at, :user_id, :username])
end
end
这仅用作 API 并且每次我访问 Post show 路由时,我都希望 JSON 返回帖子所属的用户名,该用户名在 JSON 下:用户名
【问题讨论】:
-
我认为 Post 表不应该包含
username属性,而是询问其关联的User实例它的username是什么。为什么?因为当帖子的用户更改为另一个用户时,您必须确保相应地更改帖子的用户名。不将此用户名列添加到 Post 并将其留给用户还有其他几个原因。 -
我仅将其用作 API,并且帖子的关联用户永远不会改变 - 它类似于 facebook 用户/帖子模型
标签: ruby-on-rails activerecord delegates belongs-to