ApplicationController
以下のように、のフィルターで別のコントローラーからいくつかのメソッドを宣言したいと思います。
のApplicationContoller
before_filter :authorize, :except => [:index, :show, :different_controller_method]
は:different_controller_method
で定義されていUserController
ます。これはできますか?
ApplicationController
以下のように、のフィルターで別のコントローラーからいくつかのメソッドを宣言したいと思います。
のApplicationContoller
before_filter :authorize, :except => [:index, :show, :different_controller_method]
は:different_controller_method
で定義されていUserController
ます。これはできますか?
あなたの質問の文法を片付ける際に、あなたがあなたの「異なる」方法を説明するために記号を使用していないことに気づきました。
before_filter :authorize, :except => [:index, :show, :different_controller_method]
ではなく
before_filter :authorize, :except => [:index, :show, different_controller_method]
コロンに注意してください。
でも、そのままにしておきたいですか?他の誰かがあなたの UserController クラス定義を読んでいると想像してください。UserController#differnt_controller_method にフィルターがあるかどうかを確認するには、通常、UserController クラスを定義した同じファイルを調べます。そこにフィルターが見つからない場合、彼女は、differnt_controller_method にはフィルターがないと想定します。
機能を追加したりバグを修正したりするために多くのファイルを変更する必要があるため、関連するものをまとめておくのが最善です。GoRuCo 2009 で行われた Sandi Metz の講演をご覧になることを強くお勧めします。
通常、これは機能するはずです。@jdlが言っているように、シンボルを使用していることを確認してください。
ただし、ほとんどの場合、別のアプローチを使用します。あなたの中ApplicationController
で
before_filter :authorize
したがって、定義上、すべてのアクセスが許可されます。UsersController
次に、例外を追加できます。
skip_before_filter :authorize, :only => [:index, :show, :different_controller_method]
お役に立てれば。
これはできますか?
はい、できます。