Ein Memo über den Umgang mit Rollback-Transaktionsfehlern im Devise-Modell für Ruby on Rails 5.
Diese Art von Fehler tritt auf:
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>
Ursache: Devise erfordert intern E-Mail-Adressen und Passwörter und gibt Fehler aus, wenn diese fehlen, aber diese Fehler sind nur für den Controller, sodass Fehler nicht ausgegeben werden. Sie könnten es bemerken, wenn Sie doppelte Validierung/Einschränkungen in der Datenbank haben, aber wenn nicht, ist es schwer zu bemerken.
Lösung: Geben Sie auch E-Mail-Adresse und Passwort ordnungsgemäß ein
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>
Es scheint auch eine Möglichkeit zu geben, dass das E-Mail-Adressen-Validierungs-Regex-Muster falsch ist, aber ich denke, diese Möglichkeit ist tatsächlich wahrscheinlicher.