You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Rails中的父事务是否可加入(joinable)?

如何检查Active Record事务是否设置了joinable: false

你可以通过Active Record连接对象的current_transaction方法获取当前的事务对象,再调用它的joinable?方法来判断——如果该方法返回false,就说明事务设置了joinable: false。

示例代码

# 替换YourModel为你的实际模型类
current_transaction = YourModel.connection.current_transaction

if YourModel.connection.transaction_open? && current_transaction
  if current_transaction.joinable?
    puts "当前事务是可连接的(未设置joinable: false)"
  else
    puts "当前事务设置了joinable: false"
  end
end

注意事项

  • current_transaction在Rails 5.0及以上版本可用,若使用更低版本,可能需要依赖内部APItransaction_stack(不推荐长期使用,因为属于未公开的内部实现,可能随Rails版本变更):
    # 遍历事务栈查看所有事务的joinable状态
    YourModel.connection.transaction_stack.each do |tx|
      puts "事务joinable状态: #{tx.joinable?}"
    end
    
  • 若没有事务在运行,current_transaction可能返回一个空事务对象,所以先通过transaction_open?确认事务存在后再检查会更稳妥。

内容的提问来源于stack exchange,提问作者New To Blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:40:37