我正在尝试装饰来自另一个Rails引擎的控制器。我有一个控制器方法,想要添加一行来扩展它。我不想复制整个原始控制器方法。
这是我的尝试:
Backend::BaseContentsController.class_eval do
def booking_update
# do some stuff
update
end
alias_method :update, :booking_update
end
不幸的是,这会抛出异常stack level too deep
。通常情况下我可以使用继承来调用super方法。在我的情况下,理想的做法是什么?
WrappedFoo.new(Backend::BaseContentsController)
。在我看来,链接的答案相当通用。也许最好创建一个新答案,引用那个答案,并解释为什么不应该使用alias_method_chain
。 - dan-klasson