【rails】deviceを使ったとき configure_permitted_parameters について
目的
deviceを使ったときApplicationControllerに必要な記述として下記のものがある。
ちんぷんかんぷんだったので、自分なりにまとめた。
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
1.before_action
これはコントローラーのフィルターだ。
application_controller.rbに記述することで、全てのコントローラーの実行前にアクションさせるので、ビフォーアクション。
before_action :configure_permitted_parameters , if: :devise_controller?
:devise_contoller?とはdeviseを生成した際にできるヘルパーメソッドの一つで、deviseにまつわる画面に行った時に、という意味がある。こうすることで全ての画面でconfigure_permitted_parametersが起動する。
つまりもしそれがdeviseのコントローラーだったら(devise_controller?というメソッドの返り値がtrueだったら)configure_permitted_parametersを呼ぶ。
2.configure_permitted_parameters
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar])
end
ここの記述ではデバイス版のストロングパラメーターだ。
デバイスでは初期設定でメールアドレスとパスワードしか許されていない。
ここを編集することでユーザーネームなどを入れることができる。
今回の例だとnicknameとavatarカラムへの保存を許可する。
捕捉
デバイスには3っのアクションしかありません。それらの名前とデフォルトで許可されるパラメーターは次のとおりです。
・sign_in(Devise::SessionsController#create)-認証キーのみを許可します(などemail)
・sign_up(Devise::RegistrationsController#create)-認証キーに加えてpasswordおよびpassword_confirmation
・account_update(Devise::RegistrationsController#update) -認証キーを許可し、プラスpassword、password_confirmationおよびcurrent_password
これらに追加するためにapplication_controller.rbへのbefore_actionの記述が必要になってきます。
参考文献
https://github.com/heartcombo/devise
https://qiita.com/okamoto_ryo/items/52e3506e06c27631395e
https://qiita.com/yoshimitsu41/items/ba5487e18278822828a3
Author And Source
この問題について(【rails】deviceを使ったとき configure_permitted_parameters について), 我々は、より多くの情報をここで見つけました https://qiita.com/ohnitakahiro/items/4487aed43fa264ddcdee著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .