UM@の日常

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から設定の変更を行ったことで、保存機能が作用しなくなったようだ(詳しくは異なるかもしれません、正確な情報あればお伝え頂けると幸いです)
そのため、上記追記を行うことで、ログイン・サインインどちらもできるようになった。