0

ApplicationController以下のように、のフィルターで別のコントローラーからいくつかのメソッドを宣言したいと思います。

ApplicationContoller

before_filter :authorize, :except => [:index, :show, :different_controller_method]

:different_controller_methodで定義されていUserControllerます。これはできますか?

4

4 に答える 4

1

あなたの質問の文法を片付ける際に、あなたがあなたの「異なる」方法を説明するために記号を使用していないことに気づきました。

before_filter :authorize, :except => [:index, :show, :different_controller_method]

ではなく

before_filter :authorize, :except => [:index, :show, different_controller_method]

コロンに注意してください。

于 2011-11-17T07:56:33.907 に答える
1

でも、そのままにしておきたいですか?他の誰かがあなたの UserController クラス定義を読んでいると想像してください。UserController#differnt_controller_method にフィルターがあるかどうかを確認するには、通常、UserController クラスを定義した同じファイルを調べます。そこにフィルターが見つからない場合、彼女は、differnt_controller_method にはフィルターがないと想定します。

機能を追加したりバグを修正したりするために多くのファイルを変更する必要があるため、関連するものをまとめておくのが最善です。GoRuCo 2009 で行われた Sandi Metz の講演をご覧になることを強くお勧めします。

于 2011-11-17T06:52:33.573 に答える
0

通常、これは機能するはずです。@jdlが言っているように、シンボルを使用していることを確認してください。

ただし、ほとんどの場合、別のアプローチを使用します。あなたの中ApplicationController

before_filter :authorize

したがって、定義上、すべてのアクセスが許可されます。UsersController次に、例外を追加できます。

skip_before_filter :authorize, :only => [:index, :show, :different_controller_method]

お役に立てれば。

于 2011-11-22T15:17:00.510 に答える
0

これはできますか?

はい、できます。

于 2011-11-17T06:20:29.333 に答える