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