Rails 5 + postgresql table 多个字段的引用关系
Rails 5 + postgresql table reference relation for multiple fields
我有 post 和用户 table,关系如下
create_table "posts", force: :cascade do |t|
t.string "title"
t.integer "submitted_by_id"
t.integer "user_id"
t.index ["user_id"], name: "index_posts_on_user_id"
...
现在我可以获得 post 的用户名,如下所示
<% @posts.each do |post| %>
<%= post.user.username %>
<% end %>
但是在 post 中 table 我也有 submitted_by_id 字段存储与 user_id
不同的用户
那么我怎样才能得到submitted_by_id的用户名呢?
我需要一个单独的关系吗?
谢谢!
您需要在 Post 模型中添加关系,如下所示
belongs_to :submitted_by_user,
class_name: 'User',
primary_key: :id,
foreign_key: 'submitted_by_id',
optional: true
optional: true
不会导致 submitted_by_user
存在
的验证错误
所以在 UI 你可以像
一样访问
<%= post.submitted_by_user.username %>
https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to
我同意@praga2050 的回答,但这里有一个自以为是的选择。
@posts.each {|post| User.find(post.submitted_by_id) }
如果您不想让您的关系稍微复杂一些,只需使用您已经可以访问的属性。
我有 post 和用户 table,关系如下
create_table "posts", force: :cascade do |t|
t.string "title"
t.integer "submitted_by_id"
t.integer "user_id"
t.index ["user_id"], name: "index_posts_on_user_id"
...
现在我可以获得 post 的用户名,如下所示
<% @posts.each do |post| %>
<%= post.user.username %>
<% end %>
但是在 post 中 table 我也有 submitted_by_id 字段存储与 user_id
不同的用户那么我怎样才能得到submitted_by_id的用户名呢? 我需要一个单独的关系吗?
谢谢!
您需要在 Post 模型中添加关系,如下所示
belongs_to :submitted_by_user,
class_name: 'User',
primary_key: :id,
foreign_key: 'submitted_by_id',
optional: true
optional: true
不会导致 submitted_by_user
存在
所以在 UI 你可以像
一样访问<%= post.submitted_by_user.username %>
https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to
我同意@praga2050 的回答,但这里有一个自以为是的选择。
@posts.each {|post| User.find(post.submitted_by_id) }
如果您不想让您的关系稍微复杂一些,只需使用您已经可以访问的属性。