私は、多くのボグ標準のcrudコントローラーをDRYするためのベースコントローラーを持っています。これは、標準ではない何かをする必要がある場合にのみ、各メソッドをオーバーライドするという考えです。
class MyBaseController < ApplicationController
load_and_authorize_resource
# Common crud actions
end
子コントローラーの 1 つに、カスタム アクション (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 をオーバーライドします。
ただし、これにより、「未定義のローカル変数またはメソッド `auth_exceptions' for MyBaseController:Class」というエラーが発生します。
子コントローラーで負荷を選択的にオーバーライドしてリソースを承認するための提案はありますか?
助けてくれてありがとう。