Ruby 模块如何覆盖包含它的类的父类中的方法?

Ruby 模块如何覆盖包含它的类的父类中的方法?,ruby,Ruby,我正在尝试编写一个模块,覆盖它所包含的类中的实例方法 这不起作用: 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 < Fo

我正在尝试编写一个模块,覆盖它所包含的类中的实例方法

这不起作用:

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
需要“主动支持”
福班
def棒
“酒吧”
结束
结束
纽福模块
扩展ActiveSupport::关注点
包括做
别名_; bar _; bar
结束
def棒
“新”+\u条__
结束
结束
类Baz
我的期望是
Baz.new.bar.eql应该是“new bar”
,但我得到的是
未定义的局部变量或方法“\uuuuu bar”
错误

我已经尝试了上述的各种变体,包括通过
def self.include(base)…
的旧方法,但都没有效果


有什么建议吗?

有一项伟大的新发明叫做继承:

或者更习惯地说

"new #{super}"

有一个伟大的新发明叫做继承:

或者更习惯地说

"new #{super}"

Doh。我们盯着屏幕看的时间太长了。哈卡内萨里:我知道这种感觉。有一次,我花了整整一个上午的时间研究一些复杂的循环逻辑,试图找出最优雅的方法来执行
注入
,它对每个元素都执行相同的操作,但最后一个除外。然后,一位朋友瞥见了一眼代码,说:“你知道那只是
数组#join
,对吧?”Doh。我们盯着屏幕看的时间太长了。哈卡内萨里:我知道这种感觉。有一次,我花了整整一个上午的时间研究一些复杂的循环逻辑,试图找出最优雅的方法来执行
注入
,它对每个元素都执行相同的操作,但最后一个除外。然后,一位朋友瞥见了一眼代码,说:“你知道那只是
数组#join
,对吧?”