2
Есть ли способ узнать, был ли метод переопределен подклассом программным путем? Что-то, что работает следующим образом:Как узнать, где в иерархии классов был определен метод и переопределен в Ruby?
class BaseModel
def create
puts "superclass"
end
end
class SomeModel < BaseModel
def create
puts "subclass"
end
end
puts SomeModel.overridden_instance_methods #=> [:create]
Любые идеи?
нет, это супер больной. благодаря! –
BTW: если вы не знаете прямого суперкласса 'SomeModel' заранее, вы можете использовать' SomeModel.superclass' вместо 'BaseModel'. Таким образом, вы можете упаковать эту функциональность в метод многократного использования. Что-то вроде класса Class; def overriden_methods; instance_methods (false) & superclass.instance_methods end end' И затем: 'SomeModel.overriden_methods' –
Имейте в виду, что это не будет ловить случаи, когда SomeModel смешивается с модулем, который определил create(). Это выражение даст вам только то, что SomeModel напрямую переопределило. –