# Rollback su transazioni

**URL:** <https://www.ruby-forum.com/t/rollback-su-transazioni/137628>\
**Category:** IT\
**Created:** [May 14, 2008, 9:15pm UTC](https://www.ruby-forum.com/t/rollback-su-transazioni/137628 "2008-05-14T21:15:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [May 14, 2008, 9:15pm UTC](https://www.ruby-forum.com/t/rollback-su-transazioni/137628/1 "2008-05-14T21:15:13Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [May 14, 2008, 9:54pm UTC](https://www.ruby-forum.com/t/rollback-su-transazioni/137628/2 "2008-05-14T21:54:49Z")

</div>

Ho risolto…

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