LoginSignup
26
31

More than 3 years have passed since last update.

【rails】deviceを使ったとき configure_permitted_parameters について

Posted at

目的

deviceを使ったときApplicationControllerに必要な記述として下記のものがある。
ちんぷんかんぷんだったので、自分なりにまとめた。

application_controller.rb
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

application_controller.rb
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

26
31
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
26
31