Du kan ändra standarden i en migrering:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Du kanske vill använda :bigint
istället för :integer
beroende på hur din sekvens och tabeller är inställda. Du måste använda en lambda för :default
alternativet för att hämta den råa nextval('global_seq')
uttryck i databasen.
Du kanske vill släppa den gamla sekvensen också, AFAIK måste du använda connection.execute('drop sequence ...')
för det.
Om du hoppar över standard :id
steg i din create_table
då kan du göra allt när du manuellt skapar :id
kolumn:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Återigen, valet mellan t.bigint
och t.integer
beror på hur stor du vill att din PK ska vara.