LoginSignup
27
25

More than 3 years have passed since last update.

devise_parameter_sanitizerメソッドについて

Last updated at Posted at 2020-12-01

devise_parameter_sanitizerとは?

 devise(Gem)のUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できるようになるメソッド。
 また、新しく追加したカラムをdeviseに定義されているストロングパラメーターに含めたい場合は、permitメソッドを用いることで含めることができる。
 さらに、deviseに関するストロングパラメーターを記述する際は、application_controller.rbに記述する。(deviseの処理を行うコントローラーはGem内に記述されており編集できないため。)

使用方法

① privateにdeviseに関するストロングパラメーターの記述する。

application_controller.rb
private

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
end

 第一引数の処理名には、それぞれサインイン時やサインアップ時、アカウント情報更新時の処理を記述する。

deviseの処理名 役割
:sign_in ログインの処理を行う時
:sign_up 新規登録の処理を行う時
:account_update アカウント情報更新の処理を行う時

例)新規登録時に名前(name)を許可する記述

application_controller.rb
private

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end

② before_actionを用いてメソッドを呼び出す。

application_controller.rb
before_action :configure_permitted_parameters, if: :devise_controller?

private

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
end

「if:」
 before_actionのオプションの一つで、値にメソッド名を指定することで、その戻り値がtrueであるときのみ処理を実行するように設定できる。
 今回の場合は、「:devise_controller?」というdeviseのヘルパーメソッド名を指定して、deviseに関するコントローラーの処理であればその時だけ実行されるように設定している。
 

27
25
1

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
27
25