Neu: Das englische Ruby on Rails 4.0 Buch.

4.13. Transaktionen (Transactions)

Als Transaction wird in der Datenbankwelt eine Menge von SQL-Anweisungen benannt, die unbedingt in einem Stück und ohne Unterbrechung abgearbeitet werden müssen. Sollte innerhalb einer Transaction ein Fehler geschehen, so wird die Datenbank wieder auf den Stand vor Beginn der Transaktion gesetzt.
Es gibt immer mal wieder Anwendungsgebiete, bei denen man eine Datenbank-Transaktion durchführen muss. Das klassische Beispiel dafür ist eine Geldbewegung von einem zu einem anderen Konto. Die macht nur Sinn, wenn beide Aktionen (von einem Konto abbuchen und auf das Konto des Empfängers buchen) ausgeführt werden.
Eine Transaktion wird nach folgendem Muster durchgeführt:
ActiveRecord::Base.transaction do
  Book.create(:title => 'A')
  Book.create(:title => 'B')
  Book.create(:title => 'C').authors.create(:last_name => 'Z')
end
Transaktionen sind ein komplexes Thema. Wenn Sie mehr Informationen dazu suchen, können Sie die ri-Hilfe dafür mit ri ActiveRecord::Transactions::ClassMethods auf der Shell abrufen.

Wichtig

Die Methoden save und destroy werden automatisch im Transaktions-Wrapper ausgeführt. So stellt Rails sicher, dass bei diesen Methoden kein undefinierter Zustand entsteht.

Warnung

Transaktionen werden nicht von jeder Datenbank nativ unterstützt. In einem solchen Fall funktioniert der Code weiterhin, nur hat man nicht die Sicherheit der Transaktion.