あくまでも,超個人的なメモ.全然まとまっていません.
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
とりあえずエラーは出なくなった.