STUDY MEMO

学習のメモ書き

<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