2009-06-01 9 views
5

Mam złożoną akcję wewnątrz kontrolera, który wykonuje kilka zapytań aktualizacji do bazy danych.Akcja transakcji z Ruby On Rails

W jaki sposób mogę wykonać tę czynność działa jak transakcja bez żadnego strukturalnego refaktoryzacji?

Odpowiedz

6
MyModel.transaction do 
    begin 
    @model.update_stuff 
    @sub_model.update_stuff 
    @sub_sub_model.update_stuff 
    rescue ActiveRecord::StatementInvalid # or whatever 
    # rollback is automatic, but if you want to do something additional, 
    # add it here 
    end 
end 

Oto the docs for the transaction method.

4

To posible, aby wszystkie działania kontrolera transakcyjnych na raz:

around_filter :transactional 

def transactional 
    ActiveRecord::Base.transaction do 
    yield 
    end 
end 
+0

programowanie aspektowe. Czy nie ma nic, czego Ruby nie może zrobić? (Poza pracą w systemie Windows). – Chloe