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、継承されたメソッドは含まれません。次に、set Intersectionを使用して、以前にBaseModel(またはObject)で定義されたSomeModelで定義されたすべてのメソッドを検索します。

于 2010-08-15T16:29:48.820 に答える