1

私は、多くのボグ標準の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」というエラーが発生します。

子コントローラーで負荷を選択的にオーバーライドしてリソースを承認するための提案はありますか?

助けてくれてありがとう。

4

1 に答える 1

1

派生クラスで試してください:

skip_load_and_authorize_resource :only => :export_csv

ドキュメントはこちら:skip_load_and_authorize_resource

于 2012-11-22T13:35:35.480 に答える