У меня есть несколько методов, которые запускаются каждым запросом с помощью before_filter. Я попытался поместить эти методы в несколько мест, но в конечном итоге использовал их в файле под lib, и это был единственный способ, которым это удалось. Где подходящее место для размещения этих методов? В идеале я бы хотел, чтобы они автоматически были доступны для каждого контроллера без включения чего-либо еще.Правильное место для рельсов по всему периметру, который будет доступен для before_filter
2
A
ответ
4
Вы можете использовать методы, используемые несколькими контроллерами в ApplicationController
. Если большинство запросов должно выполнить это before_filter
, поместите его также в ApplicationController
, и вы можете игнорировать фильтр для определенных действий с помощью skip_before_filter
. Пример: here.
Насколько я понимаю, контроллеры обрабатывают запрос и предоставляют данные/функции из вашей модели. Не наполнил бы какой-либо метод, не связанный с запросом в контроллере, против одной из основных концепций Rails? –
@franklinstine Если вы считаете, что код не связан с обработкой запроса и может быть повторно использован в другом месте, поместите его в модуль или класс в папку lib и вызовите его из 'before_filter' в' ApplicationController'. – Baldrick
Спасибо @baldrick, именно так у меня есть это сейчас, я просто не был уверен, что это лучший/самый предпочтительный вариант. –