Bit*_*ise 18 ruby rspec ruby-on-rails actioncontroller ruby-on-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
Run Code Online (Sandbox Code Playgroud)
And*_*eko 26
根据这个帖子
ActiveSupport :: Callbacks#
skip_callback
now如果删除了无法识别的回调,则会引发ArgumentError.
所以你的解决方案是将raise: false
选项传递给skip_before_action
:
skip_before_action :redirect_heroku_user, raise: false
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅更改日志.
在 Rails 5 中,如果该方法redirect_heroku_user
未在同一个控制器中定义,则会引发此异常。
您可以通过这里提到的raise: false
避免它:
skip_before_action :redirect_heroku_user, only: :edit, raise: false
Run Code Online (Sandbox Code Playgroud)