Puoi modificare l'impostazione predefinita in una migrazione:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Potresti voler usare :bigint
invece di :integer
a seconda di come sono impostate la sequenza e le tabelle. Devi usare un lambda per :default
opzione per ottenere il grezzo nextval('global_seq')
espressione nel database.
Potresti voler eliminare anche la vecchia sequenza, AFAIK dovresti usare connection.execute('drop sequence ...')
per quello.
Se stai saltando il :id
predefinito entra nel tuo create_table
quindi puoi fare tutto quando crei manualmente il :id
colonna:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Ancora una volta, la scelta tra t.bigint
e t.integer
dipende da quanto vuoi che sia grande il tuo PK.