機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

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

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Rails Ahoy
Railsで挫折しないためのRailsの学習の進め方
Rails ポート3000以外でサーバーを実行`rails s`したい
Rails db:migrate済みのテーブルにカラムを追加する
Rails 5でコントローラーで共通の変数を定義するには
Rails ストロングパラメーターに値を追加する
Railsでbundle install –forceしたらnokogoriのエラーが出るようになった


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu