26
20

More than 5 years have passed since last update.

before_actionとストロングパラメーターの編集について

Last updated at Posted at 2019-06-05

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: [追加したいパラメーター名])

                        以上

26
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
20