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

Antwort per Email an