在Rails migration belongs_to列中的create_table中指定列名

时间:2018-01-16 15:59:15

标签: ruby-on-rails migration rails-migrations

我正在创建下表:

create_table(:categories) do |t|
  t.belongs_to :user, null: false, foreign_key: true, index: true
  t.uuid :uuid, unique: true, null: true, index: true
  t.string :kind, :limit => 32, null: false, index: true
  t.string :category, null: false, index: true
  t.datetime :deleted_at, null: true, index: true
  t.timestamps null: false, index: false

  t.index [:kind, :category], :unique => true
end

第一列是外键,默认情况下将命名为“user_id”。我想使用belongs_to创建列,但是将列名指定为“created_by_user_id”。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以将外键列的名称传递给foreign_key,如下所示:

create_table(:categories) do |t|
  t.belongs_to :user, null: false, foreign_key: 'created_by_user_id', index: true
  ...
end

答案 1 :(得分:0)

我想您正在寻找的解决方案是明确创建intbigint列,具体取决于您的数据库。

所以它会像:

create_table(:categories) do |t|
  t.integer :created_by_user_id, null: false, foreign_key: true, index: true
...