Çoklu Yazma İçin Eksik Transaction (ARCH6065)
Anahtar ruby.orm.missing-transaction-for-multi-write · Önem warning · Kategori orm
Aynı metotta bağımlı iki veya daha fazla yazma işleminin açık bir transaction/atomik bloğa sarılmaması, kısmi commit riski taşır. İlk yazma başarılı olup ikincisi başarısız olursa veri tutarsız kalır.
Hatalı
Bölüm başlığı “Hatalı”def transfer(from, to, amount) from.update!(balance: from.balance - amount) to.update!(balance: to.balance + amount) # burada hata = tutarsızlıkenddef transfer(from, to, amount) ActiveRecord::Base.transaction do from.update!(balance: from.balance - amount) to.update!(balance: to.balance + amount) endendDüzeltme
Bölüm başlığı “Düzeltme”Bağımlı çoklu yazmaları ActiveRecord::Base.transaction bloğuna sararak atomik hale getirin.