Вы можете изменить значение по умолчанию при миграции:
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
зависит от того, насколько большим вы хотите, чтобы ваш ПК был.