Puedo ascender fácilmente la jerarquía de clases en Ruby:
String.ancestors # [String, Enumerable, Comparable, Object, Kernel]
Enumerable.ancestors # [Enumerable]
Comparable.ancestors # [Comparable]
Object.ancestors # [Object, Kernel]
Kernel.ancestors # [Kernel]
¿Hay alguna manera de descender la jerarquía también? Me gustaria hacer esto
Animal.descendants # [Dog, Cat, Human, ...]
Dog.descendants # [Labrador, GreatDane, Airedale, ...]
Enumerable.descendants # [String, Array, ...]
Pero no parece haber un descendants
método.
(Esta pregunta surge porque quiero encontrar todos los modelos en una aplicación Rails que descienden de una clase base y enumerarlos; tengo un controlador que puede funcionar con cualquier modelo y me gustaría poder agregar nuevos modelos sin tener que modificar el controlador.)