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


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


関連するかもしれない記事

Ubuntu 16.04 Rails 5にpostgresSQLをセットアップ
RailsのpostgreSQLにローカルネットワーク(LAN/外部)から接続したい
Rails 5 現在のビューの絶対パス/相対パスを出力
Rails 5 Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Rails Ahoy
Railsで挫折しないためのRailsの学習の進め方
Rails ポート3000以外でサーバーを実行`rails s`したい


Close Menu