也许我只是没有使用Ruby的正确术语(如果我请你纠正我),但谷歌并没有帮我这个。
我所拥有的是一个类(称为OrderController),它扩展了另一个类(称之为BaseStoreController)。在BaseStoreController中,我定义了一个在我的站点中使用的before_filter
,除了我的OrderController之外还有一些小的。在这种非常特殊的情况下,我需要定义一个需要执行一些额外逻辑的自定义before_filter
,然后调用我的BaseStoreController中定义的before_filter
。
我不知道的是如何做到这一点。
以下是我尝试过的内容,但似乎“超级”关键字并非我所期望的那样:
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中的authorize方法失败并出现以下错误:
You have a nil object when you didn't expect it! The error occurred while evaluating nil.authorize
答案 0 :(得分:62)
您是否尝试使用“authorize
”代替“super
”来调用基类的“super.authorize
”方法?