2 Stimmen

Wie kann man von einem übergeordneten Modell aus auf ActiveRecord::AutosaveAssociation.marked_for_destruction? zugreifen?

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.

  1. 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.

  2. 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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X