Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

devise_parameter_sanitizerメソッドについて

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に関するコントローラーの処理であればその時だけ実行されるように設定している。
 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
19
Help us understand the problem. What are the problem?