我希望a
和b
为零,因为内部事务中的raise
将“冒泡”到外部事务中,但事实并非如此。 a
和b
仍具有值。为什么会这样?
a = nil
b = nil
Foo.transaction do
a = Bar.create! name: 'a'
Foo.transaction do
b = Bar.create! name: 'b'
raise ActiveRecord::Rollback
end
end
puts "a: #{a.reload.inspect}" #has value
puts "b: #{b.reload.inspect}" #has value