web-dev-qa-db-ja.com

skip_before_actionおよびRails 5

Rails 5にアップグレードしましたが、すべてがスムーズに進みましたが、skip_before_actionの後に呼び出されるメソッドが原因で、このメッセージでrspecを実行できません

Process_actionコールバック前:redirect_heroku_userが定義されていません(ArgumentError)

Rails 4でうまく機能するため、これは非常に奇妙です。ここに私のコードがあります:

# application_controller.rb
def redirect_heroku_user
  redirect_to root_path if heroku_user?
end 

# some_controller.rb
skip_before_action :redirect_heroku_user, only: :edit
19
Bitwise

this thread によると

ActiveSupport :: Callbacks #skip_callbackは、認識されないコールバックが削除された場合、ArgumentErrorを発生させます。

したがって、あなたの解決策はraise: falseオプションをskip_before_actionに渡すことです:

skip_before_action :redirect_heroku_user, raise: false

詳細は changelog を参照してください。

26
Andrey Deineko

Rails 5、メソッドredirect_heroku_userが同じコントローラで定義されていない場合、この例外が発生します。

raise: falseここで言及 としてそれを回避するには:

skip_before_action :redirect_heroku_user, only: :edit, raise: false
4
dp7