¿Manejará las dos personas actualizando el problema, vale?Ruby on Rails: ¿Es segura una transacción de contra-caché?
Busqué en Google y se veía en la API, pero no encontraron nada
Rieles 3+, rubí 1.9.3
¿Manejará las dos personas actualizando el problema, vale?Ruby on Rails: ¿Es segura una transacción de contra-caché?
Busqué en Google y se veía en la API, pero no encontraron nada
Rieles 3+, rubí 1.9.3
Al utilizar counter_cache, la inserción de registro y la actualización del contador se realizan en la misma transacción. Pero esto no garantiza la atomicidad de una operación. Es posible que tenga que "bloquear" su registro además de evitar que las dos personas actualicen el problema.
Ver this excellent article. Se trata de la gema de objetos redis pero las dos primeras partes explican perfectamente el problema y la solución con ActiveRecord.
Respuesta corta: no. Como Cédric menciona, Rails actualiza el counter_cache
dentro de una transacción, por lo que si usted dice tener un proceso en segundo plano que actualice el mismo registro, se encontrará con errores de interbloqueo a menos que ejecute ambas actualizaciones usando un bloque with_lock
en el registro.