Ich habe eine Transaktion, um sicherzustellen, dass zwei Modelle gleichzeitig gespeichert werden.
begin
Recipe.transaction do
@recipe.save!
if @dish
@dish.save!
end
end
rescue
# Speichern fehlgeschlagen
flash[:notice] = "recipe.saved = #{@recipe.new_record?}"
render 'form'
else
# Speichern erfolgreich
flash[:notice] = 'Rezept hinzugefügt.'
redirect_to(@recipe)
end
Wenn die Validierung für eines der Modelle fehlschlägt, gelangt es in den Rescue-Block. Allerdings steht im Rescue-Block, dass das Modell kein neuer Datensatz ist. Ich hätte erwartet, dass die Validierung dazu führt, dass die Transaktion fehlschlägt und das Modellobjekt als neuer Datensatz bleibt. Was fehlt mir hier?