我正在尝试编写一个模块来覆盖它所包含的类中的实例方法。
这不起作用:
require 'active_support'
class Foo
def bar
"bar"
end
end
module NewFoo
extend ActiveSupport::Concern
included do
alias __bar__ bar
end
def bar
"new " + __bar__
end
end
class Baz < Foo
include NewFoo
end
我的期望是Baz.new.bar.should eql "new bar"
,但我得到undefined local variable or method '__bar__'
错误。
我尝试了上述的各种变体,包括通过def self.include(base)...
的旧方式无效。
任何指针?
答案 0 :(得分:3)
这是一项名为继承的伟大新发明:
module NewFoo
def bar
'new ' + super
end
end
或更具惯用力
"new #{super}"