Ciao a tutti,
credo di essermi perso qualche puntata sulle transazioni in Rails…
Ho una applicazione che fa una cosa del tipo:
Availability.transaction do
User.transaction do
begin
Availability.update_booking(booking)
rescue Exception => e
overbooking_exception = true
raise "Rollback for overbooking"
end
begin
user.credits -= booking.credits
user.credits = 0 if user.credits < 0
user.save!
rescue Exception => e
user_exception = true
raise "Rollback for user credits update exception"
end
end
end
Ora, quando sollevo l’eccezione sul secondo blocco (user_exception)
succede che invece di fare rollback mi ritrovo nel db i dati scritti dal
primo blocco.
La cosa strana è che questo mi succede da quando ho aggiornato il
framework a Rails 1.2.7 mentre prima con Rails 1.2.2 il rollback
avveniva correttamente.
Mi sono perso qualche puntata ?
Qualcuno mi può dare qualche dritta ?
Grazie a tutti.