Rollback su transazioni

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.

Ho risolto…

E’ successo che il db utilizzava lo storage engine MyISAM anzichè InnoDB
(damn…)

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs