undefined local variable or method `resource_class'が出た時の対処法
背景
- deviseのストロングパラメーターに新たなパラメーターを追加して新規登録画面を実装しようとしていたところ上記のエラーが発生
- ローカル変数またはメソッド`resource_class'が未定義のためエラーが発生している様子
該当箇所
application_controller
before_action :configure_permitted_parameters
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :phone_number, :postcode, :address])
end
修正箇所
- before_action :configure_permitted_parametersの後にif: :devise_controller?を追加することで無事修正完了
application_controller
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :phone_number, :postcode, :address])
end
補足情報
devise_contoller?はdeviseを導入することで利用可能なヘルパーメソッドの一つで、「deviseに関連する画面で処理を行った時に」という意味合いがあり、これによってapplication_controllerと紐付けている。