我有两个模型(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
看来他们两个都运作良好。那么它们之间有什么区别?
谢谢
答案 0 :(得分:2)
没有区别。事务是按数据库连接而不是每个模型进行的。因此,只要将类映射到相同的数据库,它们都是相等的。
参考:https://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html