2017-05-15 2 views
0

Ich habe festgestellt, dass in der Methode "rails destroy" eine zusätzliche Transaktion die Abfrage umschließt. Daher, wenn ich versuche, das folgende nicht funktioniert.Aktion "Löschen und Einfügen von Datensätzen" in derselben Transaktion ausführen?

ActiveRecord::Base.transaction do 
@model_a.destroy_all 
@new_model_list.each do |item| 
    item.create! 
    # Error occurs some point 
    # No rollback for those deleted records 
end 
end 
+1

der richtige Weg Active Transaktion zu verwenden, ist entweder zu verwenden 'Active :: Base.transaction' oder' SomeModel.transaction'. Ich bin mir nicht sicher, wie Ihr Code die Zeile destroy_all ausführt. – TheGeorgeous

+0

Meine Schuld. Ich vermisse :: Basisteil. Danke. –

Antwort

0

Versuchen neu zu schreiben, dies zu:

ActiveRecord::Base.connection.transaction do 
@model_a.destroy_all 
@new_model_list.each do |item| 
    item.create! 
    # Error occurs some point 
    # No rollback for those deleted records 
end 
end 
Verwandte Themen