rails plantillas mejores las gemas ruby-on-rails ruby activerecord transactions isolation-level

ruby on rails - plantillas - ¿Cómo establecer el nivel de aislamiento de la transacción utilizando la conexión ActiveRecord?



las mejores gemas de ruby (3)

Necesito administrar el nivel de aislamiento de transacciones por transacción de manera portátil en todas las bases de datos (SQLite, PostgreSQL, MySQL al menos).

¿Podría por favor recomendar una gema que mejore los adaptadores de conexión de base de datos ActiveRecord para permitir eso?

Sé que puedo hacerlo manualmente, así:

User.connection.execute(''SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE'')

... pero esperaría algo como:

User.isolation_level( :serializable ) do # ... end


Esta funcionalidad es compatible con ActiveRecord en sí:

MyRecord.transaction(isolation: :read_committed) do # do your transaction work end

Es compatible con los niveles de aislamiento ANSI SQL:

  • :read_uncommitted
  • :read_committed
  • :repeatable_read
  • :serializable

Este método está disponible desde Rails 4 , no estaba disponible cuando el OP hizo la pregunta. Pero para cualquier aplicación de Rails decentemente moderna, este debería ser el camino a seguir.