Sie können die Standardeinstellung bei einer Migration ändern:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Vielleicht möchten Sie :bigint
verwenden statt :integer
abhängig davon, wie Ihre Sequenz und Tabellen eingerichtet sind. Sie müssen ein Lambda für :default
verwenden Option, um den rohen nextval('global_seq')
zu erhalten Ausdruck in die Datenbank.
Vielleicht möchten Sie auch die alte Sequenz löschen, AFAIK müssten Sie connection.execute('drop sequence ...')
verwenden dafür.
Wenn Sie die Standardeinstellung :id
überspringen Schritt in Ihrer create_table
dann können Sie alles tun, indem Sie die :id
manuell erstellen Spalte:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Wieder die Wahl zwischen t.bigint
und t.integer
hängt davon ab, wie groß Ihr PK sein soll.