İçeriğe geç

Ç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.

def transfer(from, to, amount)
from.update!(balance: from.balance - amount)
to.update!(balance: to.balance + amount) # burada hata = tutarsızlık
end
def transfer(from, to, amount)
ActiveRecord::Base.transaction do
from.update!(balance: from.balance - amount)
to.update!(balance: to.balance + amount)
end
end

Bağımlı çoklu yazmaları ActiveRecord::Base.transaction bloğuna sararak atomik hale getirin.