在Rails中,Model.a.transaction和.Benda和ModelB.transaction有什么区别?

时间:2019-08-09 13:43:18

标签: ruby-on-rails ruby transactions

我有两个模型(ActiveRecord),ModelA和ModelB。我想知道下面显示的两个代码段是否相同?

ModelA.transaction do 
    ModelA.create! attr1: 'value1', attr2: 'value2'
    ModelB.create! attr1: 'value1', attr2: 'value2'
end

ModelB.transaction do 
    ModelA.create! attr1: 'value1', attr2: 'value2'
    ModelB.create! attr1: 'value1', attr2: 'value2'
end

看来他们两个都运作良好。那么它们之间有什么区别?

谢谢

1 个答案:

答案 0 :(得分:2)

没有区别。事务是按数据库连接而不是每个模型进行的。因此,只要将类映射到相同的数据库,它们都是相等的。

参考:https://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html