0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

deviseでカラムのnot null制約を外す(複数)

Posted at

初めまして。
プログラミング学習初心者で、ログイン機能実装した際に
新規ログインで
ActiveRecord::NotNullViolation in Customers::RegistrationsController#create
とエラーが表示されてしまい、その解決方法です。

やること

今回は、deviseで最初にカラムを追加してdb:midrateしてしまった後に
実は null: false ではなかったときの対処法です。

なんでもかんでも null: false にしてしまっていましたが、
createするときに空の状態で保存されるのを防ぐためのものと認識せず記載していました。

制約を外す

migrate後に null:false を複数訂正したいときはターミナルに

rails g migration ChangeColumnToNull

出来上がったマイグレーションファイルがdb/migrateにあるので、

#customersデーブルのカラム、trainersテーブルのカラムのnot null制約を外す

def up
  #Not Null制約を外す
  change_column_null :customers, :name, true
  change_column_null :customers, :age, true
  change_column_null :trainers, :name, true
  :
  :
end

def down
  change_column_null :customers, :name, false
  change_column_null :customers, :age, false
  change_column_null :trainers, :name, false
  :
  :
end

とし、ターミナルで

rails db:migrate

とすると null: false がなくなります。

以上となります。
違った点がありましたらご指摘お願い致します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?