移行でデフォルトを変更できます:
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の大きさによって異なります。