Выяснение, какие before_filters уже установлены в Rails 3 - PullRequest
4 голосов
/ 29 сентября 2010

У меня есть DSL для настройки контроллера.Базовая функциональность опирается на before_filters.Чтобы предотвратить установку before_filter более одного раза, мне действительно нужно выяснить, установлен ли before_filter в контроллере Rails 3.Поскольку before_filter работает не так, как переменные класса (наследование, перезагрузка класса), я не могу просто установить переменную класса для проверки.

Копание нового сильно абстрагированного кода для обратных вызовов AbstractController не дает мне никакой подсказки о том,возможно вообще.

Действительно ли мне нужно вызывать skip_filter для каждого вызова DSL в контроллере?

1 Ответ

11 голосов
/ 08 февраля 2011

Ниже я нашел способ сделать это:

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 >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...