6

コントローラー構成用の DSL があります。基礎となる機能は before_filters に依存しています。before_filter を複数回設定しないようにするには、Rails 3 コントローラーで before_filter が既に設定されているかどうかを確認する必要があります。before_filter はクラス変数 (継承、クラスのリロード) とは異なる働きをするため、クラス変数を設定してチェックすることはできません。

AbstractController コールバックの高度に抽象化された新しいコードを掘り下げても、これが可能かどうかの手がかりはまったく得られません。

コントローラー内のすべての DSL 呼び出しに対して、本当に skip_filter を呼び出す必要がありますか?

4

1 に答える 1

16

以下は、これを行うために私が見つけた方法です。

noam$ rails c

Loading development environment (Rails 3.0.3)

ruby-1.9.2-p136 :001 > ApplicationController._process_action_callbacks.map {|c| c.filter if c.kind == :before}.compact
=> [:deny_banned_user, :validate_session, :verify_authenticity_token, :require_user_login]
ruby-1.9.2-p136 :002 >
于 2011-02-08T20:39:24.907 に答える