- Published on
RailsのDeviseモデルでrollback transactionエラー
908文字2分で読めます–––
閲覧数
- Authors
- Name
- Shou Arisaka nyapp.buzz/shou
- short bio
- Z世代の情報技術者。Next.jsで自作SNSを個人開発中。
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: 'example@gmail.com' , password: "hogehoge" )
...
=> #<User id: 9, email: "example@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>
メールアドレスのバリデーション正規表現パターンが間違っている、という可能性もあるみたいですが、 実際はこちらの可能性のほうが高いかと思います。
Rollback Transaction Error - Rails - Stack Overflow15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。
何かご質問がありますか?