Wenn ich 4 Klassen mit der folgenden Hierarchie habe:Wie bekomme ich eine Liste aller Unterklassen, ohne zuerst in Ruby Instanziieren
class MainClass < ActiveRecord::Base
...
end
class SubClassA < MainClass
...
end
class SubClassB < MainClass
...
end
class SubClassC < MainClass
...
end
Wie kann ich eine Liste der Unterklassen von Mainclass erhalten, ohne durch zu gehen und die Schaffung Instanzen von jeder der anderen Klassen?
In einem frischen IRB-Sitzung kann ich gehen und sagen
irb(main)> MainClass.descendants
=> []
Allerdings, wenn ich durchlaufen und Instanzen jeder Unterklasse erstellen ich folgendes
irb(main)> SubClassA.new
=> #<SubClassA ...>
irb(main)> SubClassB.new
=> #<SubClassB ...>
irb(main)> SubClassC.new
=> #<SubClassC ...>
irb(main)> MainClass.descendants
=> [SubClassA(...), SubClassB(...), SubClassC(...)]
ich im Grunde sehen werde ich Nach einer Möglichkeit suchend, alle Subklassen programmatisch so zu liefern, dass ich in Zukunft SubClassD, SubClassE usw. hinzufügen möchte, muss ich nicht befürchten, dass jeder in dem Code instanziiert wird, bevor der Benutzer sie sehen kann.
Ich versuchte auf der Schiene Konsole (Schienen 4.1.2). Ich bekomme das (und keine leere Liste wie Sie): - irb (main): 012: 0> MainClass.descendants => [SubClassA (Tabelle existiert nicht), SubClassB (Tabelle existiert nicht)] – rohan
Interessant. Ursprünglich teilte ich meine Unterklassen in ihre eigenen Dateien (sub_class_a.rb, sub_class_b.rb, sub_class_c.rb) alle auf dem gleichen Niveau und ich bekam, was ich oben beschrieben habe. Als ich die Klassen alle in derselben main_class.rb konsolidierte, funktionierte die Methode der Nachkommen wie gesagt. – user1535152