Ruby on rails 第二个数据库(postgres)未在事务中回滚

Ruby on rails 第二个数据库(postgres)未在事务中回滚,ruby-on-rails,ruby,heroku,transactions,Ruby On Rails,Ruby,Heroku,Transactions,我有一个代码,我正在用ruby代码作为事务测试回滚,如果它在该块中失败了,下面是我的代码 def create_log begin ActiveRecord::Base.transaction do log = Log.new(params[:log]) if log.save # line of code # line of code #Only this below function happening through **

我有一个代码,我正在用ruby代码作为事务测试回滚,如果它在该块中失败了,下面是我的代码

def create_log
  begin
   ActiveRecord::Base.transaction do
     log = Log.new(params[:log])
     if log.save
      # line of code
      # line of code

      #Only this below function happening through **SECOND database postgres(under heroku)**
      log.add_logs_in_review(status)
     end
   end
   rescue Timeout::Error => e
     puts "#{e}"
   end
end

因此,我们在这里设置超时,并且所有进程都将回滚,而没有发生在第二个数据库上的进程,那么我们如何也从第二个数据库回滚进程呢?

如果您使用的是两个数据库,解决方案是使用嵌套事务并处理回滚

如果您有数据库A和B

A.transaction do
    B.transaction do
        raise ActiveRecord::Rollback if (some condition)#this will rollback both A and B
    end
    raise ActiveRecord::Rollback if (some condition)#this will rollback only A as B has already ended
end
资料来源:

我认为在这种情况下,我们不能设置任何条件来提高超时,因为我在这里执行超时回滚,在这种情况下?如果条件是可选的,您可以使用rescue或其他任何方法。核心思想是嵌套事务实际上我遇到了问题,问题是followerdb