Возможно, я просто не использую правильную терминологию для Ruby (и если я, пожалуйста, поправьте меня), но Google просто не помогает мне в этом.
У меня есть класс (назовите его OrderController), который расширяет другой класс (назовите его BaseStoreController). В BaseStoreController я определил before_filter
, который используется на моем сайте, с небольшим, за исключением моего OrderController. В этой конкретной ситуации мне нужно было определить пользовательский before_filter
, который должен выполнить некоторую дополнительную логику, а затем вызвать before_filter
, определенный в моем BaseStoreController.
Я не знаю, как это сделать.
Вот что я пробовал, но похоже, что ключевое слово "супер" не то, что я ожидал от него:
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