Respuesta

2

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.

1

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.