16

データベース(SQLite、PostgreSQL、MySQL以上)をポータブルの方法でトランザクションごとにトランザクション分離レベルを管理する必要があります。ActiveRecord接続を使用してトランザクション分離レベルを設定するにはどうすればよいですか? [推奨する宝石]

gemをお勧めします。これにより、ActiveRecordデータベース接続アダプタを拡張することができますか?

私はそのように、手動でそれを行うことができます知っている:MIT(私は1を開発し利用可能な宝石はありませんでした

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

答えて

18

この機能は、ActiveRecordは、それ自体によってサポートされています。

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

それは、ANSI SQL分離レベルをサポートしています。

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

この方法は利用可能ですsince Rails 4、それはOPが質問したときに利用できませんでした。しかし、まともな現代のRailsアプリケーションでは、これは道のりです。

関連する問題