我有一个基本控制器来干燥我的许多沼泽标准 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’”
有没有人有任何建议可以选择性地覆盖我的子控制器中的加载和授权资源?
谢谢你的帮助。