Rails 6,如何通过迁移创建自定义主键?

vvp*_*p45 1 ruby-on-rails ruby-on-rails-6

我正在尝试在 Rails 6 中创建自定义主键,但没有创建主键,而是创建了普通 id。

我已经给予的移民

def change
create_table(:m_user_status, :id => false) do |t|
  t.integer :id, :options => 'PRIMARY KEY'
  t.string :status_name, limit: 20
  t.integer :status_check
  t.timestamps
end  
Run Code Online (Sandbox Code Playgroud)

从上面刚刚创建了 int4 类型的 id,但我想创建 int4 类型和主键而不自动递增的 id。我如何在不自动递增的情况下给出 id 并输入 int4(整数正常)

pat*_*raw 5

您可以根据此处的文档组合:id和选项: https ://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/create_table:primary_key

例如:

class CreatedummyTable < ActiveRecord::Migration[6.0]
  def change
    create_table :dummy_table, id: :int4, primary_key: :foo do |t|
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在 postgres 中创建此架构:

create_table "dummy_table", primary_key: "foo", id: :integer,  default: nil, force: :cascade do |t|
  t.datetime "created_at", precision: 6, null: false
  t.datetime "updated_at", precision: 6, null: false
end
Run Code Online (Sandbox Code Playgroud)