#deviseで登録・ログインができない
deviseでユーザー登録とログイン画面を作成した後に、
デフォルト(email)以外の情報で登録・ログインをしたい時用の方法です。
viewページのフォームを編集したのに、登録・ログインできないトラップがありますので、
参考にしてください。
以下の場合、sing_upとaccount_updateのkeyを変更しています。
app/controllers/application.controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
if resource_class == User
devise_parameter_sanitizer.permit(:sign_up, keys: [:name,:email])
devise_parameter_sanitizer.permit(:sign_in,keys:[:email])
devise_parameter_sanitizer.permit(:account_update,keys:[:name,:email])
end
end
end
###defore _action
before_action :configure_permitted_parameters, if: :devise_controller?
before_actionは一種のフィルターのようなもので、application.contollerに記述することで、全てのコントローラーに対して、実行されます。
:devise_contoller?とはdeviseを生成した際にできるヘルパーメソッドの一つで、
deviseに関連する画面に飛ぶなら、ということです。
こうすることで全てのdevise画面でconfigure_permitted_parametersが起動します。
つまりもしそれがdeviseのコントローラーだったら(devise_controller?というメソッドの返り値がtrueだったら)configure_permitted_parametersを呼び出すということです。