"contacts"テーブルの中に"name"columnを作成した。
ここまでは順調に進んだが、null: falseにしていたため、新しいcolumnを追加するときに下記のエラーが発生してしまった。
ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: contacts.email
新しいcolumnを追加した流れ
・columnを追加するコマンド
rails g migration AddEmailToContacts email:string
・作成されたファイル
(contactsテーブルにemailのcolumnを追加して、stringは文字列としての指定)
class AddEmailToContacts < ActiveRecord::Migration[7.0]
def change
add_column :contacts, :email, :string
end
end
・作成されたファイルにnull:falseとdefalutを追加
null:falseは空であることを許さない、default""は、migrateしたときに空の状態ではないとするために追加した。
class AddEmailToContacts < ActiveRecord::Migration[7.0]
def change
add_column :contacts, :email, :string, null: false, default: ""
end
end
これで解決!!!
注意しなければいけないと思った点は、
・rails db:migrateを一度したら、なるべくmigrateファイルはいじらない。
・rails db:rollbackでmigrateする前に戻って、ファイルを編集して、もう一度migrateする。
・schema.rbで確認するか、rails db:versioで現在の位置を確認しながら慎重に行う。