~/blog/rollback-transaction-error-devise-model-rails
Published on

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

908文字2分で読めます–––
閲覧数
Authors
  • avatar
    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 Overflow
avatar

Shou Arisaka

情報技術者 / Z世代プログラマー / SaaSアプリやSNSを開発
今すぐ話そう!

15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。

Created with Fabric.js 5.2.4 何かご質問がありますか?