Когда мне нужно найти, где метод объявлен в каком-то классе, скажем, «Модель», я делаю
Model.ancestors.find {|c| c.instance_methods(false).include? :deactivate! }
Это ищет дерево предков в том же порядке, что и ruby для первого, у которого есть метод в instance_methods(false)
, который включает только ненаследуемые методы.
Примечание: до ruby 1.9 методы были перечислены как строки, а не как символы, поэтому это будет
Model.ancestors.find {|c| c.instance_methods(false).include?('deactivate!') }