gpt4 book ai didi

ruby-on-rails - 如何设置所有 Rails 事务的隔离级别

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:44 26 4
gpt4 key购买 nike

我使用的是 RoR 4.2.3 版,我知道我可以设置我的事务的隔离级别。但是,我在哪里定义设置所有事务的隔离级别?所以我只需要定义一次就不用担心了?

我正在使用 postgreSQL 作为我的数据库

最佳答案

似乎没有全局隔离选项 ,因此您有四个选择:

  1. Monkeypatch 现有的 transaction 实现,以便它选择你想要的隔离级别。 (猴子修补是不可取的)
  2. 在整个应用程序中使用正确的隔离 级别。

    SomeModel.transaction(isolation: :read_committed)

  3. 扩展 ActiveRecord 并创建您自己的自定义事务方法。

  4. 如评论所述 - 您可以在数据库配置中编辑默认隔离级别。对于 postgres,它是 this one

示例代码:

#lib/activerecord_extension.rb
module ActiveRecordExtension
extend ActiveSupport::Concern

module ClassMethods
def custom_transaction
transaction(isolation: :read_committed) do
yield
end
end
end
end

ActiveRecord::Base.send(:include, ActiveRecordExtension)

然后在你的初始化器中:

#config/initializers/activerecord_extension.rb
require "active_record_extension"

之后你可以使用:

MyModel.custom_transaction do
<...>
end

将来,这将允许您在一个地方更改隔离级别。

关于ruby-on-rails - 如何设置所有 Rails 事务的隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com