1

我有一个基本控制器来干燥我的许多沼泽标准 crud 控制器,我的想法是,如果我需要做一些非标准的事情,我只覆盖每个方法。

class MyBaseController < ApplicationController

  load_and_authorize_resource

  # Common crud actions

end

现在在我的一个子控制器中,我有一个自定义操作(export_csv)

class ReportsController < MyBaseController 

  load_and_authorize_resource :except => :export_csv

  def export_csv
    # custom auth and other stuff
  end

end

现在我无法再点击 export_csv 操作,而是收到拒绝访问异常。如果我不从我的基本控制器继承一切都很好。

我想我可以按如下方式解决它:

class MyBaseController < ApplicationController

  load_and_authorize_resource :except => auth_exceptions

  def self.auth_exceptions
    []
  end

  # Common crud actions

end

然后根据需要覆盖我的子类中的 self.auth_exceptions 。

但是,这会触发错误“MyBaseController:Class 的未定义局部变量或方法‘auth_exceptions’”

有没有人有任何建议可以选择性地覆盖我的子控制器中的加载和授权资源?

谢谢你的帮助。

4

1 回答 1

1

在您的派生类中尝试:

skip_load_and_authorize_resource :only => :export_csv

文档在这里:skip_load_and_authorize_resource

于 2012-11-22T13:35:35.480 回答