Vous pouvez modifier la valeur par défaut dans une migration :
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Vous voudrez peut-être utiliser :bigint
au lieu de :integer
selon la configuration de votre séquence et de vos tables. Vous devez utiliser un lambda pour le :default
option pour obtenir le nextval('global_seq')
brut expression dans la base de données.
Vous voudrez peut-être également supprimer l'ancienne séquence, autant que je sache, vous devrez utiliser connection.execute('drop sequence ...')
pour ça.
Si vous ignorez le :id
par défaut étape dans votre create_table
alors vous pouvez tout faire lorsque vous créez manuellement le :id
colonne :
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Encore une fois, le choix entre t.bigint
et t.integer
dépend de la taille que vous voulez que votre PK soit.