Как мне увидеть, где в Иерархии Классов был определен и переопределен Метод в Ruby? - PullRequest
2 голосов
/ 15 августа 2010

Есть ли способ узнать, был ли метод переопределен подклассом программно?Что-то, что работает так:

class BaseModel
  def create
    puts "superclass"
  end
end

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

puts SomeModel.overridden_instance_methods #=> [:create]

Есть идеи?

1 Ответ

4 голосов
/ 15 августа 2010
SomeModel.instance_methods(false) & BaseModel.instance_methods

false делает instance_methods не включающим унаследованные методы.Затем мы используем пересечение множеств, чтобы найти все методы, определенные в SomeModel, которые ранее были определены в BaseModel (или Object).

...