Supposons que j'ai ce contrôleur très simple:ActiveRecord de Rails expose les conditions de course?
class CountersController
def inc
c = Counter.find(1)
c.value += 1
c.save!
end
end
Si deux clients accèdent méthode inc
en même temps, est-il possible que c.value
seulement augmente de 1? Si oui, comment résoudre ce problème?
le 'inc' est juste un échantillon. –
vous ne pouvez résoudre cela en ayant la base de données gérer cela, car son verrouillage de la ligne au cours de la mise à jour et mon code montre comment mettre cela dans la base de données – beanie