Rails エラー

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

Ruby on Rails 5のDeviseモデルでrollback transactionエラーが起こる場合の対処についてメモです。deviseが内部でメールアドレスとパスワードが必須で、それらが欠けているとエラーを吐き出すようになっているが、そのエラーもあくまでControllerあってのエラーなので…

Shou Arisaka
1 分で読める
2018年9月20日

Ruby on 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: '[email protected]' , password: "hogehoge" )
...
=> #<User id: 9, email: "[email protected]", created_at: "2018-07-06 20:51:19", updated_at: "2018-07-06 20:51:19", provider: nil, uid: nil, username: "yuis", disc: nil>

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

Rollback Transaction Error - Rails - Stack Overflow

この記事をシェア

Shou Arisaka 2018年9月20日

🔗 リンクをコピー