Wenn ich ein ActiveRecord-Modell wie folgt habe
class Foo < ActiveRecord::Base
validates_inclusion_of :value, :in => self.allowed_types
def self.allowed_types
# some code that returns an enumerable
end
end
Dies funktioniert nicht, weil die Methode allowed_types zu dem Zeitpunkt, an dem die Validierung ausgewertet wird, noch nicht definiert ist. Alle Lösungen, die mir einfallen, drehen sich im Grunde darum, die Methodendefinition über die Validierung zu verschieben, damit sie bei Bedarf verfügbar ist.
Ich schätze, dass dies mehr eine Frage des Codierungsstils als alles andere sein kann (ich möchte alle meine Validierungen an der Spitze des Modells und Methoden am unteren Rand), aber ich fühle, es sollte eine Art von Lösung für diese, möglicherweise mit Lazy Auswertung der anfänglichen Modell laden?
Ist das, was ich tun möchte, überhaupt möglich? Sollte ich nur die Methode über die Validierung definieren oder gibt es eine bessere Validierung Lösung zu acheive, was ich will.