Możesz zmienić ustawienie domyślne migracji:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Możesz użyć :bigint
zamiast :integer
w zależności od tego, jak ustawiona jest Twoja sekwencja i stoły. Musisz użyć lambda dla :default
opcja uzyskania surowego nextval('global_seq')
wyrażenie do bazy danych.
Możesz również usunąć starą sekwencję, AFAIK musisz użyć connection.execute('drop sequence ...')
za to.
Jeśli pomijasz domyślny :id
krok w create_table
możesz to wszystko zrobić, ręcznie tworząc :id
kolumna:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Ponownie, wybór między t.bigint
i t.integer
zależy od tego, jak duży ma być Twój PK.