#1.具体例の提示
以下のコードにおけるbefore_actionとストロングパラメーターの編集の内容について解説する。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters , if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar])
end
end
#2.before_actionについて
before_actionとは、コントローラのフィルタリング的役割を担うものである。つまり、before_actionをApplicationControllerに定義することで、ApplicationControllerを継承しているコントローラー内の全てのアクションが実行される前に、before_actionが実行される。
上記の例で言えば、処理の流れとして、最初にbefore_actionが実行される。そして、次にそこに定義されたconfigure_permitted_parametersが実行される。
また、これを定義しないと、configure_permitted_parametersメソッドが読み込まれない。そのため、編集したストロングパラメーターが反映させるためにも必ずbefore_actionを定義する。
#3.ストロングパラメーターの編集について
ストロングパラメーターとは、ストロングパラメータはコントローラーで送られてきたパラメータを安全に受け取るための仕組みのことをいう。
ストロングパラメーターは、初期設定の段階では、メールアドレスとパスワードのみを受け取るように設定してある。そのため、新しいキーをコントローラに受け取らせるためには、ストロングパラメーターを編集しなければならない。
上記の例において、ストロングパラメーターの編集は、以下のコードによってなされている。
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar])
end
devise_parameter_sanitizerメソッドを使うことで設定されているにストロングパラメーター対して、新たなパラメーターを追加することができる。
編集の書式としては、以下のようになる。
devise_parameter_sanitizer.permit(追加したいメソッドの種類, keys: [追加したいパラメーター名])
以上