0

アプリケーションコントローラーにロードする lib ディレクトリにカスタムモジュールがあります。cancan の使用を開始しましたが、カスタム モジュールのすべてのアクションで Access Denied エラーが発生しています。cancan にカスタム モジュールの承認をチェックさせたくありません。これを回避する 1 つの方法は を使用することexcept => [:action_name_in_my_custom_module]ですが、アプリケーションの多くの場所で使用する多くのアクションがあります。より良い解決策が必要です。

4

1 に答える 1

0

コントローラーアクションのモジュールがあり、それをコントローラーに含めていると仮定すると、それらをすべて入れなかった理由はありますApplicationControllerか?

あなたが試すことができることの1つ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

before フィルターが定義された後に含める必要があると思います。

于 2012-11-02T01:36:08.400 に答える