Thomas Neumann schrieb:
Werner Laude wrote:
Controller:
var1 = Model_a.create(params[:params1])
var2 = Model_b.new(params[:params2])
var1.var2 = var2
speichert die Daten ab. Gut.
Der Aufruf Model_a.create lässt die Validierung laufen, und
*speichert* falls alles gut geht.
Hallo Thomas.
danke für die Infos.. werde das heute testen..
Die spätere zuweisung var1.var2 = var2 speichert laut ActiveRecord API
Dokumentation auch var2 in der Datenbank. Daher würde ich davon
ausgehen dass die Validierung für beide Objekte abläuft. Du kannst das
mal ganz einfach debuggen, wenn du dir var1.errors und var2.errors
ausgeben lässt (zB mit nem breakpoint).
Das verstehe ich eben noch nicht.. wieso schlägt die Validierung nicht
an wenn in model_a/var1 kein Wert ist? Es wird abgespeichert -mit oder
ohne Wert.
Ich denke dass dein Problem ist, dass Du nicht alle errors in der View
ausgibst, und nur die "error_messages_for" funktion für var1 aufrufst
(die schreibt NUR die fehler von var1 raus), nicht aber die errors von
var2.
Ich hatte gestern abend in der "Bibel" noch was zu diesem Thema gefunden
und werde mich da heute mal reinknien..
Gruß
Werner
Im Controller ist alles richtig, jedoch wird, falls var2 nicht valid
ist, var1 dennoch abgespeichert. Daher würde ich es eher so schreiben:
var2 = Model_b.new(params[:params2])
var1 = Model_a.new(params[:params1].merge(:var2 => var2) )
if var1.valid? && var2.valid?
var1.save!
var2.save!
end
Damit bist Du auf der sicheren Seite, auch wenn es sicherlich
eleganter geht. Interessant könnte für Dich auch validates_associated
sein, damit kannst Du sagen dass ein Model_a nur valid ist, wenn das
Model_b auch validiert.
Hoffe das hilft.
Gruß
Thomas
------------------------------------------------------------------------
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
--
Werner Laude
Lindenburger Allee 22 | 50931 Köln
0221.8805 635
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://www.webagentur-laude.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug