AddしたColumnにNot Null制約を追加する

カラムにnot nullを追加する場合

<ターミナル >

rails g migration AddNotnullOnモデル名

 

<db/migrate/***>

def change

 change_column_null :モデル名, :対象カラム名, false

end

 

過去にAddColumnToしてあるカラムにnot nullを追加する場合

上記の方法では、rails db:migrate時に

column "name" of relation "users" contains null values

と出てマイグレートされない(userモデルのnameカラムにnot nullを追加したい想定)

直訳すると、「users」モデルの「name」カラムには既に「null」が入っているから、not nullできませんよという意味

AddColumnした場合、デフォルトでnullが入ってしまう為にこのような問題が起こる

解決策としては、カラムにnullではない適当な値を入れて、not null設定をする

<db/migrate/***>

def change

 change_column_null :モデル名, :対象カラム名, false, 0 ←"0"を入れてみた

end