Anda dapat mengubah default dalam migrasi:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Anda mungkin ingin menggunakan :bigint
bukannya :integer
tergantung pada bagaimana urutan dan tabel Anda diatur. Anda harus menggunakan lambda untuk :default
opsi untuk mendapatkan nextval('global_seq')
mentah mentah ekspresi ke dalam database.
Anda mungkin ingin membuang urutan lama juga, AFAIK Anda harus menggunakan connection.execute('drop sequence ...')
untuk itu.
Jika Anda melewatkan :id
default langkah di create_table
. Anda maka Anda dapat melakukan semuanya ketika Anda secara manual membuat :id
kolom:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Sekali lagi, pilihan antara t.bigint
dan t.integer
tergantung pada seberapa besar Anda ingin PK Anda.