Cancan授权自定义模块

时间:2012-11-02 00:48:50

标签: ruby-on-rails ruby-on-rails-3 cancan

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

1 个答案:

答案 0 :(得分: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

我认为在定义过滤器之前需要将包括在内。