Я легко переходжу ієрархію класів у Ruby:
String.ancestors # [String, Enumerable, Comparable, Object, Kernel]
Enumerable.ancestors # [Enumerable]
Comparable.ancestors # [Comparable]
Object.ancestors # [Object, Kernel]
Kernel.ancestors # [Kernel]
Чи є якийсь спосіб також зійти з ієрархії? Я хотів би це зробити
Animal.descendants # [Dog, Cat, Human, ...]
Dog.descendants # [Labrador, GreatDane, Airedale, ...]
Enumerable.descendants # [String, Array, ...]
але, схоже, немає descendants
способу.
(Це питання виникає, тому що я хочу знайти всі моделі в додатку Rails, що виходять з базового класу, і перерахувати їх; у мене є контролер, який може працювати з будь-якою такою моделлю, і я хотів би мати можливість додавати нові моделі без необхідності змінювати контролер.)