9
10

More than 3 years have passed since last update.

【rails】deviseにストロングパラメーターを追加する

Posted at

deviseと言うgemをインストールすると、ログイン、サインアップ機能が簡単に実装できますが、
あらかじめストロングパラメーター(パスワード、メールアドレス)が備わっています。

しかし、ログイン、サインアップをする際に、他のストロングパラメーター(名前、画像等)も欲しいことありますよね。

その場合にストロングパラメーターを追加する方法をアウトプットいたします。

※deviseの詳しい説明については
https://qiita.com/gogotakataka1234/items/0125b7d50ded8968a745
を確認ください。

devise_parameter_sanitizerを使おう!

devise_parameter_sanitizerをメソッドを使うと、deviseで設定されているストロングパラメーターにパラメーターを追加することができる。

使い方の例

devise_parameter_sanitizer.permit(追加したいメソッドの種類, keys: [追加したいパラメーター名])

例えば、サインアップ時に画像の情報を必要とする場合

devise_parameter_sanitizer.permit(:sign_up, keys: [:image])

これでサインアップ時に画像をアップロードするdeviseが実装されました。
あとは、数点気をつけなければいけないことがあります。

devise_parameter_sanitizerを使う上での注意点

①devise_parameter_sanitizerメソッドはbefore_actionに設定します

②devise_parameter_sanitizerメソッドは記述するのはDeviseのコントローラを継承したコントローラに実装する。

③devise_parameter_sanitizerメソッドを直接before_actionに記述してはいけない

あれ?①と言っていることが違う!?
実は直接before_actionに設定していはダメなんです。
基本的には「configure_permitted_parametersメソッド」のなかでdevise_parameter_sanitizerを定義します。
そしてconfigure_permitted_parametersをbefore_actionに設定するのです。

よくわからない方、例を見てみましょう。

before_action :configure_permitted_parameters

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

configure_permitted_parametersは許可するパラメーターを設定すると言う意味。

以上になります!

9
10
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
9
10