Возможно, я просто не использую правильную терминологию для Ruby (и, если я, пожалуйста, поправьте меня), но Google просто не помогает мне в этом.
У меня есть класс (назовите его OrderController), который расширяет другой класс (назовите его BaseStoreController). В BaseStoreController я определил before_filter
, который используется на моем сайте, за исключением небольшого, кроме моего OrderController. В этой конкретной ситуации мне нужно было определить пользовательский before_filter
, который должен выполнять некоторую дополнительную логику, а затем вызвать before_filter
, определенный в моем BaseStoreController.
Чего я не знаю, так это как сделать.
Вот что я пробовал, но похоже, что ключевое слово 'super' не то, что я ожидал:
class BaseStoreController < ActionController::Base
before_filter :authorize
protected
def authorize
#common authroization logic here
end
end
и
class OrderController < BaseStoreController
before_filter :authorize
protected
def authorize
#additional authroization logic here
super.authorize
end
end
Конечный результат моего кода заключается в том, что метод авторизации в OrderController завершается с ошибкой:
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.authorize