In einer Rails-Anwendung, an der ich arbeite, habe ich ein Modell "Type", das sich auf das Single-Table-Vererbungsmodell "Node" bezieht: Jede mögliche Unterklasse von Node ist in der types-Tabelle als Type definiert / p>
Im Moment ist es möglich, alle Klassen in einem Initialisierer zu laden, aber ich möchte die Unterklassen nur laden, wenn sie benötigt werden.
Die beste Lösung, die ich mir vorstellen kann, wäre ein Fallback auf eine nicht initialisierte Konstante, die prüfen würde, ob diese Konstante eine Klasse in der Anwendung darstellen kann, ähnlich wie method_missing.
Ich hätte gerne Ratschläge, wie und wo diese Logik definiert werden soll oder ob es eine bessere Lösung gibt.
Es gibt Module#const_missing
:
Ich nehme an, Sie können (ab) das für Ihre Bedürfnisse verwenden.
Ich weiß nicht, ob das neu ist, aber wie ich dachte, es war es wert, hinzugefügt zu werden. Es ist möglich, die Methode missing als Klassenmethode zu verwenden
%Vor%es gibt die Methode const_missing: Sie funktioniert wie method_missing, aber es geht um Konstanten
Vielleicht kannst du rescue
einen undefinierten konstanten Fehler machen und deine Klassen laden / erstellen.
Tags und Links ruby ruby-on-rails