Wird es die zwei Leute handhaben, die das Problem aktualisieren, ok?Ruby on Rails - Ist eine Counter-Cache-Transaktion sicher?
ich gegoogelt und schaute in dem api aber nichts gefunden
Rails 3+, Rubin 1.9.3
Wird es die zwei Leute handhaben, die das Problem aktualisieren, ok?Ruby on Rails - Ist eine Counter-Cache-Transaktion sicher?
ich gegoogelt und schaute in dem api aber nichts gefunden
Rails 3+, Rubin 1.9.3
Wenn counter_cache verwenden, das Datensatz einfügen und die Zähleraktualisierung wird in der gleichen Transaktion durchgeführt. Dies garantiert jedoch nicht die Atomarität einer Operation. Möglicherweise müssen Sie Ihren Datensatz zusätzlich "sperren", um zu vermeiden, dass das Problem mit zwei Personen auftritt.
Siehe this excellent article. Es geht um das redis-objects-Juwel, aber die ersten beiden Teile erklären das Problem und die Lösung mit ActiveRecord perfekt.
Kurze Antwort: Nein. Wie Cédric erwähnt, aktualisiert Rails die counter_cache
innerhalb einer Transaktion, also wenn Sie sagen, haben einen Hintergrundprozess, der den gleichen Datensatz aktualisiert, werden Sie feststellen, Deadlock-Fehler, wenn Sie beide Updates mit einem with_lock
Block auf dem Datensatz ausführen.