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的事务回滚也将使内部事务也回滚。
答案 0 :(得分:0)
如果错误发生在第二个事务性块中,则该错误块可以有效地解决该错误,这意味着第一个事务性块认为一切都是虚假的,继续进行并提交事务-包括应该回滚的事务在第二个交易区块中。
嵌套事务时必须非常小心。简短的答案是,它取决于嵌套的结构方式。一些不错的阅读: