Wir haben eine accepts_nested_attributes_for
mit einer dependent: destroy
, die gut mit der _destroy
param arg funktioniert.Warum scheitert ein Kindmodell bei der Validierung von "accept_nested_attributes_for"?
Wir haben eine Validierung für das Kind hinzugefügt, und das funktioniert wie erwartet.
Aber wenn wir die beiden kombinieren, löst das Speichern des Parent einen unbehandelten Fehler aus, anstatt false zurückzugeben.
class Foo < ActiveRecord::Base
accepts_nested_attributes_for :bars, allow_destroy: true
...
end
class Bar < ActiveRecord::Base
before_destroy :can_do?
def can_do?
unless yeah_sure
errors.add(:base, I18n.t("the.translation"))
false
end
end
...
end
Die bar_spec
Tests yeah_sure
in beiden Fällen mit Fehlern leer oder vorhanden ist (und die korrekte Nachricht ist in dort).
Wenn ich durch den Schienenbereich gegangen bin, gibt es 3 Ebenen von Catch, Rollback/Cleanup und Freigabe in active_support und Transaktion.
Ich habe auch versucht, in der Steuerung zu retten, beide Methoden-Ebene und einen Anfang Block, und keiner von denen gefangen den Fehler, der ist seltsam.
Irgendeine Idee, warum foo.save
einen Fehler wirft, anstatt falsch zurückzugeben?
Rails 4.2.10
Ihre 'Bar'-Einheit ist das Kind von' Foo', nicht Elternteil. Bitte fügen Sie die Log-Trace zum leichteren Verständnis hinzu. – yeuem1vannam