Можете да промените настройката по подразбиране в миграция:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
Може да искате да използвате :bigint
вместо :integer
в зависимост от това как са настроени вашата последователност и таблици. Трябва да използвате ламбда за :default
опция за получаване на необработения nextval('global_seq')
израз в базата данни.
Може да искате да премахнете и старата последователност, AFAIK ще трябва да използвате connection.execute('drop sequence ...')
за това.
Ако пропускате :id
по подразбиране стъпка във вашата create_table
тогава можете да направите всичко, когато ръчно създадете :id
колона:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
Отново изборът между t.bigint
и t.integer
зависи от това колко голям искате да бъде вашият PK.