Do before_filter: кроме работы через контроллер подкласса? - PullRequest
0 голосов
/ 17 ноября 2011

Я хочу объявить некоторые методы из другого контроллера в фильтре ApplicationController, как показано ниже:

In ApplicationContoller

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

где :different_controller_method определено в UserController.Можем ли мы сделать это?

Ответы [ 4 ]

1 голос
/ 17 ноября 2011

Но ты хочешь сохранить это так? Представьте, что кто-то еще читает ваше определение класса UserController. Она проверит, есть ли какие-либо фильтры в UserController # difnt_controller_method, обычно просматривая тот же файл, который вы определили классом UserController. Не найдя там никаких фильтров, она предположила бы, что difnt_controller_method не имеет никаких фильтров.

Лучше хранить взаимосвязанные вещи, иначе поддержание приложения становится трудным, потому что добавление функции или исправление ошибки потребует изменения многих файлов. Я настоятельно рекомендую вам посмотреть этот доклад от Sandi Metz, представленный на GoRuCo 2009.

1 голос
/ 17 ноября 2011

При очистке грамматики вашего вопроса я заметил, что вы не использовали символ для описания своего «другого» метода.

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

, а не

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

Обратите внимание на двоеточие.

0 голосов
/ 22 ноября 2011

Обычно это должно работать. Убедитесь, что вы используете символы, как говорит @jdl.

В большинстве случаев мы используем другой подход. В вашем ApplicationController вы пишете

before_filter :authorize

Так что по определению весь доступ разрешен. В вашем UsersController вы можете добавить исключение:

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

Надеюсь, это поможет.

0 голосов
/ 17 ноября 2011

Можем ли мы это сделать?

Да, вы можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...