Rails 5.1中的skip_before_action回调和继承

时间:2017-05-02 10:57:11

标签: ruby-on-rails ruby ruby-on-rails-5

我刚刚将我的应用程序升级到Rails 5.1,并且我被skip_before_action回调的新行为所困扰。即如果在我尝试跳过它时未定义回调,则会引发错误。

我知道我可以传递加注:假如

skip_before_action :authorise, raise: false

但是想知道是否有更好的方法来做到这一点。

我的主要问题是,当eager load设置为true时,新行为会因控制器的模块化设置而混乱。

基本上我有dir app/controllers/apimodule_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添加到所有内容中,那就这样吧,但肯定有更好的方法......

1 个答案:

答案 0 :(得分:1)

尝试将require 'module_controller'添加到app_chats_controller.rb

的顶部