Rails 5 Deviseモデルでrollback transactionエラー

    >


こんなエラーが。

irb(main):006:0> User.create(username: 'yuis')
   (0.0ms)  begin transaction
   (0.0ms)  rollback transaction
=> #<User id: nil, email: "", created_at: nil, updated_at: nil, provider: nil, uid: nil, username: "yuis", disc: nil>

原因:deviseが内部でメールアドレスとパスワードが必須で、それらが欠けているとエラーを吐き出すようになっているが、そのエラーもあくまでControllerあってのエラーなので、エラーが出力されない。
データベースでも二重にバリデーション/制約をかけていれば気づくかもしれないが、そうじゃない場合は気づきにくい。

解決:メアドとパスワードもちゃんと入力する

irb(main):005:0> User.create(username: 'yuis' , email: 'yuis.twitter+yuis@gmail.com' , password: "hogehoge" )
...
=> #<User id: 9, email: "yuis.twitter+yuis@gmail.com", created_at: "2018-07-06 20:51:19", updated_at: "2018-07-06 20:51:19", provider: nil, uid: nil, username: "yuis", disc: nil>

メールアドレスのバリデーション正規表現パターンが間違っている、という可能性もあるみたいですが、
実際はこちらの可能性のほうが高いかと思います。

https://stackoverflow.com/questions/23202842/rollback-transaction-error-rails




お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu