6
5

More than 5 years have passed since last update.

devise_parameter_sanitizerに変更があった模様

Last updated at Posted at 2016-08-24

あくまでも,超個人的なメモ.全然まとまっていません.

Ruby on RailsでDeviseを使っていて,認証まわりを全然いじっていなかったのにもかかわらず,ひさしぶりに認証関係のリンクをクリックしたら突如以下のようなエラーが出るようになった.

Devise NoMethodError 'for' ParameterSanitizer

どうやらDeviseのバージョンが新しくなって,devise_parameter_sanitizerまわりに変更があった模様.

モデルのコントローラの中のconfigure_permitted_parametersで,今まで以下のように書いていた.

def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :provider, :uid) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :current_password) }
end

今はこんなふうに書かないといけないらしい.

def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email])
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :phone, :email, bank_attributes: [:bank_name, :bank_account]])
end

とりあえずエラーは出なくなった.

6
5
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
6
5