Ich habe ein Modell, Person, mit der folgenden Assoziation:
has_many :distributions
accepts_nested_attributes_for :distributions, :allow_destroy => true
validate :distributions_must_total_100
Die benutzerdefinierte Validierung schlägt derzeit fehl, wenn sie nicht sollte - wenn einige der Validierungen zur Zerstörung markiert wurden - weil sie immer noch im Attribut "Verteilungen" (im Speicher, egal was in der DB ist) angezeigt werden, bevor die Person und ihre Verteilungen gespeichert werden.
Ich möchte Folgendes verwenden ActiveRecord::AutosaveAssociation.marked_for_destruction?
innerhalb meines Validators, um die Verteilungen zu ignorieren, die kurz vor der Zerstörung stehen.
-
Wie kann ich diese Methode erreichen? Ich bin mir nicht ganz sicher, was die Beziehung zwischen Distribution (Ihrem normalen Rails-Modell) und dieser Klasse ist.
-
Ist das ein furchtbarer, unsauberer Hack? Es fühlt sich nur ein wenig schmutzig an, und es ist die präziseste Lösung für das Problem.
Ich habe Schritt durch den ActiveRecord-Quellcode im Debugger zu bestätigen, dass die Datensätze tatsächlich für die Zerstörung (d.h. nicht ein Javascript oder Form Builder-Bug) markiert sind.