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は許可するパラメーターを設定すると言う意味。
以上になります!