事务块阻止了数据库中的提交发生,我们如何跳过某些事情?

我正在使用事务块并在该块内执行一些操作,有些事情应该忽略事务块,因为它与代码紧密结合,所以我无法将更新从事务块中移出。

我们如何跳过某些部分,让其余行为照常

Record.transaction do
  check_for_errors required_columns
  create_report
end

def check_for_errors
 loop
  ...
 begin
  Methods
  // want to skip this perticular db update from transaction block
  job.update_column(total_number: loop index)
  // as this is under transaction block no changes can be seen on ui
 rescue => e
    populate_error_message(e.message)
    raise activeRecord::Rollback
  end
 end
end

任何想法在这种情况下可以做什么?

zwlyuan 回答:事务块阻止了数据库中的提交发生,我们如何跳过某些事情?

要跳过现有事务中的特定数据库操作,可以在单独的线程中执行它。例如,对于上述情况

  ...
  Thread.new do
    ActiveRecord::Base.connection_pool.with_connection do
      job.update_column(total_number: loop_index)
    end
  end.join
  ... # continue method
本文链接:https://www.f2er.com/3158457.html

大家都在问