skip_before_action 和 Rails 5
skip_before_action and Rails 5
我刚刚升级到 Rails 5,一切都很顺利,但没有明显的原因,在 skip_before_action
之后调用的方法不允许 rspec 到 运行这条消息
Before process_action callback :redirect_heroku_user has not been defined (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
所以你的解决方案是将 raise: false
选项传递给 skip_before_action
:
skip_before_action :redirect_heroku_user, raise: false
有关详细信息,请参阅 changelog。
在Rails 5中,如果方法redirect_heroku_user
没有在同一个控制器中定义,那么它会抛出这个异常。
您可以通过 raise: false
来避免它,因为 mentioned here:
skip_before_action :redirect_heroku_user, only: :edit, raise: false
我刚刚升级到 Rails 5,一切都很顺利,但没有明显的原因,在 skip_before_action
之后调用的方法不允许 rspec 到 运行这条消息
Before process_action callback :redirect_heroku_user has not been defined (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
所以你的解决方案是将 raise: false
选项传递给 skip_before_action
:
skip_before_action :redirect_heroku_user, raise: false
有关详细信息,请参阅 changelog。
在Rails 5中,如果方法redirect_heroku_user
没有在同一个控制器中定义,那么它会抛出这个异常。
您可以通过 raise: false
来避免它,因为 mentioned here:
skip_before_action :redirect_heroku_user, only: :edit, raise: false