0

我在我的应用程序控制器中加载的 lib 目录中有一个自定义模块。我开始使用 cancan,现在我的自定义模块中的所有操作都收到拒绝访问错误。我不想让 cancan 检查我的自定义模块的授权。解决此问题的一种方法是使用except => [:action_name_in_my_custom_module],但我在许多地方的应用程序中使用了很多操作。我需要一个更好的解决方案。

4

1 回答 1

0

假设您有一个控制器操作模块并且您将其包含在您的控制器中,您是否有理由没有将它们全部放入ApplicationController

您可以尝试的一件事是skip_before_filter在模块中使用。这将在您包含 MyModule 的任何类上调用该方法:

module MyModule
  def self.included(klass)
    klass.class_eval <<-filters
      skip_before_filter :filter_method_to_skip, only: [:method_a, :method_b, ...]
    filters
  end
end


class MyController < ApplicationController
  before_filter :filter_method
  include MyModule
end

我相信在定义过滤器之前需要包含它。

于 2012-11-02T01:36:08.400 回答