13.16. Obsługa transakcji z wykorzystaniem biblioteki ActiveRecord

Problem

Chcemy wykonywać operacje z bazą danych w sposób transakcyjny: jeśli jedna z operacji w ciągu nie powiedzie się, baza danych ma znaleźć się w takim stanie, jakby nie wykonała się żadna z tych operacji.

Rozwiązanie

Można włączyć plik active_record/transactions. Dzięki temu dla każdego obiektu klasy ActiveRecord będzie dostępna metoda transaction. Metoda ta rozpoczyna transakcję z bazą danych, uruchamia blok kodu, a następnie zatwierdza transakcję. Jeśli blok kodu zgłosi wyjątek, transakcja z bazą danych zostanie wycofana.

Oto prosty kod inicjujący, który daje bibliotece ActiveRecord dostęp do bazy danych systemu weblog zaprezentowanego po raz pierwszy w „13.11. ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.