Você pode alterar o padrão em uma migração:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Você pode querer usar
:bigint
em vez de :integer
dependendo de como sua sequência e tabelas estão configuradas. Você tem que usar um lambda para o :default
opção para obter o nextval('global_seq')
bruto expressão no banco de dados. Você pode querer descartar a sequência antiga também, AFAIK você teria que usar
connection.execute('drop sequence ...')
por isso. Se você está pulando o padrão
:id
passo em seu create_table
então você pode fazer tudo ao criar manualmente o :id
coluna:create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Novamente, a escolha entre
t.bigint
e t.integer
depende de quão grande você quer que seu PK seja.