RailsでNOT NULL制約をマイグレーションでつける
🪔

RailsでNOT NULL制約をマイグレーションでつける

Created
May 10, 2022 09:29 AM
Tags
Ruby on Rails
Railsで、NOT NULL制約がついてないカラムに後からマイグレーションでNOT NULL制約をつける時のやり方。
migrateファイルで、change_column_nullを使う。DEFAULTも設定する場合はさらにchange_column_defaultも行う必要がある。
class ExampleMigration < ActiveRecord::Migration[6.0] def change change_column_null :table, :column, false, true change_column_default :table, :column, from: nil, to: true end end
change_column を使うと PG::NotNullViolation: ERROR: column "column" contains null values の様に、すでにレコードが作成されていた場合はエラーになってしまう。change_column_nullを使うとNULLのカラムをデフォルト値(4パラ目)でUPDATEしてからNOT NULL制約をつけてくれる。