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