<Ruby on Rails エラー編> ActiveRecord::RecordInvalid: Validation failed: Email has already been takenエラー
発生したエラー
rails db:seedでFactoryBotのデータを作成しようとしたところ、
rails aborted! ActiveRecord::RecordInvalid: Validation failed: Email has already been taken ...
といったエラーが出た。
考えたこと
Raised by ActiveRecord::Base#save! and ActiveRecord::Base#create! when the record is invalid. Use the record method to retrieve the record which did not validate.
ActiveRecord::RecordInvalid
未確認のレコードを取得するためのレコードメソッドを使ってください、ということは、確認されたレコードがある=データがあるということ?
emailはuniquenessで定義されているので、一意でなければならないということを考えると、factorybotの前のデータがすでに入っていて、データが重複してる可能性がある。
対処法
データを消去してもう一度rails db:seedを実行したところ、エラーが消えた。
$ rails db:migration:reset $ rails db:seed
参考
Ruby on Rails - Email has already been takenと出てテストがパスしない|teratail