在嵌套事务中,如果外部事务被回滚,内部事务是否会回滚?
model1.rb
def method1 Model1.transaction do model2_ref_obj = Model2.find(some_id) model2_ref_obj.method1 end end
model2.rb
def method1 Model2.transaction do ## so some work self.save! end end
当model1
的事务回滚时,内部事务是否也会回滚?
根据ActiveRecord嵌套事务的文档:
事务调用可以嵌套。 默认情况下,这会使嵌套事务块中的所有数据库语句成为父事务的一部分。
这意味着如果父事务回滚,那么嵌套事务也将如此,因为它们是同一事务的一部分。