2

有没有办法知道方法是否已被子类以编程方式覆盖?像这样工作的东西:

class BaseModel
  def create
    puts "superclass"
  end
end

class SomeModel < BaseModel
  def create
    puts "subclass"
  end
end

puts SomeModel.overridden_instance_methods #=> [:create]

有任何想法吗?

4

1 回答 1

4
SomeModel.instance_methods(false) & BaseModel.instance_methods

make不包括继承的方法falseinstance_methods然后我们使用集合交集来查找之前在 BaseModel(或 Object)上定义的 SomeModel 上定义的所有方法。

于 2010-08-15T16:29:48.820 回答