Rails+Postgresql環境で主キーではないauto increment(Postgresqlではsequenceというらしい)な属性をもつカラムを作る必要があってやり方迷った。で、結局こうした。
Migration内でで使えそうなRailsのAPIが見つからなかったので(こんなことそんなにやる場面なさそうだし)executeで直接実行してしまった。
sequenceをcreate→テーブルをcreate→sequenceをテーブルに付与という処理が必要っぽい。
今年度入ってからしばらくPostgresqlだけどその前はMySQL、その前はOracleだったんでなんか毎回軽く戸惑うな。
class Add{カラム名}To{テーブル名} < ActiveRecord::Migration def up add_column :{テーブル名}, :{カラム名}, :integer, comment: "hogehoge" execute <<-ENDE create sequence {テーブル名}_{カラム名}_seq; alter table {テーブル名} alter {カラム名} set default nextval('{テーブル名}_{カラム名}_seq'); alter sequence {テーブル名}_{カラム名}_seq owned by {テーブル名}.{カラム名}; ENDE end def down remove_column :{テーブル名}, :{カラム名}, :integer, comment: "hogehoge" end end