U kunt de standaard in een migratie wijzigen:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Misschien wilt u :bigint . gebruiken in plaats van :integer afhankelijk van hoe uw volgorde en tabellen zijn ingesteld. Je moet een lambda gebruiken voor de :default optie om de onbewerkte nextval('global_seq') . te krijgen expressie in de database.
Misschien wilt u ook de oude reeks verwijderen, AFAIK zou u connection.execute('drop sequence ...') moeten gebruiken daarvoor.
Als u de standaard :id . overslaat stap in je create_table dan kun je het allemaal doen wanneer je handmatig de :id . maakt kolom:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Nogmaals, de keuze tussen t.bigint en t.integer hangt af van hoe groot je wilt dat je PK is.