我刚刚将我的应用程序升级到Rails 5.1,并且我被skip_before_action回调的新行为所困扰。即如果在我尝试跳过它时未定义回调,则会引发错误。
我知道我可以传递加注:假如
skip_before_action :authorise, raise: false
但是想知道是否有更好的方法来做到这一点。
我的主要问题是,当eager load设置为true时,新行为会因控制器的模块化设置而混乱。
基本上我有dir app/controllers/api
与module_controller.rb
:
module Api
class ModuleController < ActionController::Base
before_action :authorise
end
end
然后我有app_chats_controller.rb
跳过授权回调:
module Api
class AppChatsController < ModuleController
skip_before_action :authorise
end
end
在急切加载时,首先加载app_chats_controller.rb
,这意味着尚未定义回调,并且不会引发raise: true
错误。
如果我必须咬住子弹并将raise: false
添加到所有内容中,那就这样吧,但肯定有更好的方法......
答案 0 :(得分:1)
尝试将require 'module_controller'
添加到app_chats_controller.rb