【結論】
・カラムのNOT NULL制約を途中で設定or削除するには、change_column_null
メソッドを利用してマイグレーションを行う
・change_column_null(table_name, column_name, null, default = nil)
・第3引数のnull
フラグに、true
を指定すればNOT NULL制約が適用され、false
をしてするとNOT NULL制約を外せる
【目次】
【本題】
NOT NULL制約の設定方法
カラムのNOT NULL制約を設定または削除するには、change_column_null
メソッドを利用してマイグレーションを行います。
change_column_null(table_name, column_name, null, default = nil)
第3引数のnull
フラグに、true
を指定すればNOT NULL制約が適用され、false
をしてするとNOT NULL制約を外せます。
NOT NULL制約を設定する場合には、以下の様に記述します。
class ChangeDescriptionToCampaign < ActiveRecord::Migration[5.2] def change change_column_null :posts, :name, false end end
NOT NULL制約を削除する場合には、以下の様に記述します。
class ChangeDescriptionToCampaign < ActiveRecord::Migration[5.2] def change change_column_null :posts, :name, true end end
なお、第4引数で値を指定すると、既存のNULLをその値に置き換えることが可能です。
この値がデフォルト値になるわけではないので、注意が必要です。
参考情報
ActiveRecord::ConnectionAdapters::SchemaStatements
Active Record マイグレーション - Rails ガイド
change_column_null (ActiveRecord::ConnectionAdapters::SchemaStatements) - APIdock
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :261日
今日までの合計時間:2458h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:2384h
目標との解離:74h
「10,000時間」まで、
残り・・・「7542時間!」