gpt4 book ai didi

ruby-on-rails - 验证 ActiveRecord 事务的存在

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:05 25 4
gpt4 key购买 nike

有没有一种方法可以从一个方法中验证它正在与一个事件的事务 block 一起运行?基本上,我们有一些库方法可以执行一些 ActiveRecord 保存操作,这些操作应该在事务 block 中运行(以便在任何操作失败时回滚所有内容),并且一些使用我们库的用户没有按照记录将这些方法包装在事务中.

我希望有某种我可以编写的辅助方法,例如 withinTransactionBlock?,它可以验证 ActiveRecord 事务并在返回 false 时引发异常。

如果目前这是不可能的,我该如何开始编写这样一个方法来确保我的库中的多个方法以原子方式运行(除了将顺序排列的方法的每个排列打包到单独的函数中)?

最佳答案

是的,您可以检查是否有使用

打开的任何交易
class User < ActiveRecord::Base
def check_transaction
p self.class.connection.transaction_open?
end
end

User.new.check_transaction
# false

User.transaction do
User.new.check_transaction
end
# true

即使在另一个 AR 子类上打开交易

Account.transaction do
User.new.check_transaction
end
# true

关于ruby-on-rails - 验证 ActiveRecord 事务的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369017/

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