Rails
devise
Rails4
Rails5

Rails4からRails5にアップデートしたらDeviceでエラーが出た

More than 1 year has passed since last update.

Rails4で開発を始めたアプリケーションをRails5にアップデートしたら

undefined method `for' for #<Devise::ParameterSanitizer:0x***>

って出た。

原因のファイルは app/controllers/application_controller.rb で、


app/app/controllers/application_controller.rb

  def configure_permitted_parameters

devise_parameter_sanitizer.for(:sign_up) { |user_params| user_params.permit(:username, :password, :password_confirmation) }
devise_parameter_sanitizer.for(:sign_in) { |user_params| user_params.permit(:username, :password, :remember_me) }
end

と書いていたからだった。

Deviseの公式にあるように、forメソッドをpermitメソッドで書き換えてやるとうまくいった。


app/app/controllers/application_controller.rb

def configure_permitted_parameters

devise_parameter_sanitizer.permit(:sign_up) do |user_params|
user_params.permit(:username, :password, :password_confirmation)
end
devise_parameter_sanitizer.permit(:sign_in) do |user_params|
user_params.permit(:username, :password, :remember_me)
end
end


参考にしたサイト

http://stackoverflow.com/questions/37341967/rails-5-undefined-method-for-for-devise-on-line-devise-parameter-sanitizer