Передайте константу в рельсы до исключения фильтра - PullRequest
0 голосов
/ 29 мая 2018

У меня есть несколько фильтров до того, как: before_filter :setup_plan, except: :some_action, :another_action, :yet_another_action

Но у меня есть 3 или 4 исключения для многих до фильтров.Сначала я собирался изменить логику во всех моих методах before_filter, но обнаружил, что повторяю много кода.В более совершенном мире у меня был бы отдельный контроллер для действий, которые я хочу добавить, но я должен добавить действия в тот же контроллер и обойти уже существующую структуру.

ЧтоЯ хочу сделать, это создать константу или переменную с методами, которые я хочу пропустить в моих фильтрах до, таких как

ACTIONS_TO_SKIP = [:some_action, :another_action, :yet_another_action]

И затем просто использовать before_filter :setup_plan, except: ACTIONS_TO_SKIP

Я получаю неинициализированныйпостоянная ошибка при этом.Я попытался переместить это в метод в помощнике, а также получил неопределенную ошибку метода.Я знаю, что что-то упустил, но не могу понять это.Неужели нет способа передать метод или константу, которая возвращает массив методов, которые я хочу пропустить в своих фильтрах before?Просто пытаюсь сделать мой контроллер немного чище и менее многословным.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вам нужно будет объявить константу ДО вызова, чтобы пропустить.Файл интерпретируется сверху вниз.

class FoosController
  ACTIONS_TO_SKIP = [:yes, :this, :and, :something, :more]

  before_filter :setup_plan, except: ACTIONS_TO_SKIP
end

Обратите внимание, что в последних версиях Rails это теперь называется before_action: Rails 4: before_filter vs. before_action (возможно, вы хотите обновить...)

0 голосов
/ 29 мая 2018

Вы можете попробовать что-то вроде этого:

before_filter :my_before_filter, if: :action_to_skip?

def action_to_skip?
  %w[some_action another_action yet_another_action].member?(action_name)
end
...