У меня есть требование проверять наличие некоторых параметров в определенных ситуациях.Вот пример этого:
В моем пользовательском контроллере для действия обновления мне необходимо проверить наличие этих параметров.То же самое относится и к контроллеру автомобиля, обновите действие, вы можете увидеть повторяющуюся тему здесь.Параметры: additional_info
.
Мой базовый контроллер предоставляет additional_info_params
, который извлекает правильные данные из запроса.
Вот то, что я пробовал до сих пор.Я создал объект контроллера AR и включил его в контроллер, вот некоторый код:
module ClassMethods
def require_additional_info_for(*methods)
binding.pry
return unless methods.include?(action_name)
if additional_info_params.empty?
head 400
end
end
end
Моя идея состояла в том, чтобы иметь возможность определять методы, которые требуют эти параметры в верхней части файла контроллера, как before_action
от рельсов или skip_authorization_check
от канкан.Вот так:
MyController < BaseController
include Concerns::AdditionalInformation
require_additional_info_for :update
def update
...
end
end
Однако приведенный выше код работает не так, как я планировал, главным образом потому, что он запускает класс запроса без особых знаний о запросе (где мне нужно получить имя действия через action_name
).
Так как я могу сделать что-то подобное?