skip_before_action和Rails 5

23

我刚刚升级到了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

1
你在其他地方有一个 before_action :redirect_heroku_user吗?我认为实际的错误是告诉你不能跳过 before_action,因为 before_action 实际上从未设置。我可能错了,但是根据建议的答案添加 rails: false 似乎不是必要的,除非你真的在生产环境中需要它。 - arieljuod
2个回答

32

6
在Rails 5中,如果同一控制器中未定义redirect_heroku_user方法,则会引发此异常。您可以像这里提到的那样传递raise: false以避免异常。
skip_before_action :redirect_heroku_user, only: :edit, raise: false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接