Valid?

Hallo
ich schreibe über ein Formular ein 2 Models.
Zuerst prüfe ich ob ein Model einen Fehler wirft.
Wenn nein dann speichere ich die Beschreibung und das Bild.

if (photo_description.valid? && image.valid?)
photo_description.save
image.save
else
#Fehler -> show errors
end

In diesem Fall werden allerdings die Fehler warum, das validieren fehl
schlägt nicht angezeigt.
Ich möchte allerdings, dass der Benutzer sieht, warum das speichern
nicht funktioniert.

lg
michi

Michael … wrote:

end

In diesem Fall werden allerdings die Fehler warum, das validieren fehl
schlägt nicht angezeigt.

Das sollten sie, wenn du im View error_messages_for(:photo_description)
und error_messages_for(:image) hast.

Der Code sollte aber lieber so aussehen:

if (photo_description.valid? && image.valid?)
Image.transaction do
photo_description.save!
image.save!
end
else
#Fehler -> show errors
end

Sonst hast du eine Race-Condition, d.h. zwischen den valid? und 2
save-Aufrufen kann das valid nicht mehr zutreffen.

Jonathan

danke für deine hilfe.

bin gerade draugekommen, dass error_messages_for :image nichts angezeigt
hat weil ich image und nicht @image verwendet habe.

weiters bin ich zwei verschachtelte transaktionen verwendet(2 tables)
wie es hier beschreiben ist.
http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html#M001115

lg
michi