Rails 5:将与自定义名称的belongs_to关联添加到模型中,并进行迁移

问题描述 投票:0回答:1

我有一个

User
模型和一个
Question
模型。

我想向

belongs_to :user
模型添加
Question
关联,但我希望该关联被称为
author
。例如,我会调用
question.author
而不是
question.user

显然这需要两个步骤:

  1. models/question.rb 中的关联
  2. 迁移(注意用户表和问题表都已经存在)

令人惊讶的是,我没有在 Rails 5 的不同答案中找到执行此操作的单一常规方法。

我该怎么做?

ruby-on-rails ruby-on-rails-4 activerecord ruby-on-rails-5 ruby-on-rails-6
1个回答
24
投票
rails g migration add_user_to_questions user:references
rails db:migrate

理想情况下,您还可以打开生成的迁移并通过添加所需的选项来更改

add_reference
。更“完整”的 add_reference 示例:

add_references(
  :user,
  null: false,
  index: {name: "custom_index_name_if_needed"},
  type: :integer,
  foreign_key: {
    to_table: "public.my_users_table",
    on_delete: :cascade # ensure the row is deleted when user is deleted from DB
  }
)

然后在模型中:

class Question < ApplicationRecord # or ActiveRecord::Base
  belongs_to :author, class_name: 'User', foreign_key: :user_id
end
© www.soinside.com 2019 - 2024. All rights reserved.