Deviseでemail以外の項目でログインする場合の注意点
今回、自身が作成中のアプリで
email can't be blank rails
と出てしまい、teratermを見ると、rollback transaction
と表記されてしまったこと。
それに対して、自分自身が忘れてしまうことがないように、対処した内容と注意点を記したいと思います。
そもそも、emailをログインの鍵にしたい
かつ
新規登録の場合、ユーザー名を入力したいということであれば、
#application.controller.rb devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
上記記載だけでよかった
(gemでdeviseを利用しているため、emailで鍵の機能を保有していた・ユーザー名の保存機能を付け足すだけでよかった)
しかし、ユーザー名をログインの鍵にしたい場合はそうはいかない。
初めに、以下の記入を行った。
#config config.authentication_keys = [:name] config.case_insensitive_keys = [:name]・・・元々[]内はemailと記載あり config.strip_whitespace_keys = [:name]・・・元々[]内はemailと記載あり
上記記入によって、ログインの鍵をユーザー名に変更することができた。
しかし、サインイン(新規登録)の際、email can't be blank railsと出てくるようになってしまった。
これに対しては、以下の記入を行い、対処した。
#application.controller.rb devise_parameter_sanitizer.permit(:sign_up, keys: [:email])
元々、deviseの初期機能としてemailの保存機能はついていたものの、
configから設定の変更を行ったことで、保存機能が作用しなくなったようだ(詳しくは異なるかもしれません、正確な情報あればお伝え頂けると幸いです)
そのため、上記追記を行うことで、ログイン・サインインどちらもできるようになった。