Notes posted by PatrickKing

RSS feed
March 18, 2015
0 thanks

Transactions and Stale ORM Data

Consider the following:

foo = Foo.new
bar = Bar.new

ActiveRecord::Base.transaction do
  foo.save! # succeeds
  bar.save! # failure, validation problem
end

foo.persisted? # true (!)

foo was not permanently stored in the database, but it was transiently saved, and this is reflected in the ActiveRecord model still in memory. But if you try

foo.reload # raises ActiveRecord::RecordNotFound

Don’t let stale data confuse you after using transactions!

Edited to add: This particular example does not succeed in reproducing the issue I encountered, which involved a slightly more complicated set of nested transactions. I haven’t managed to produce a simple test case where stale data remains in the model, but I have definitely experienced it in my app.

March 18, 2015
0 thanks

Transactions and Stale ORM Data

Consider the following:

ActiveRecord::Base.transaction do
  foo = Foo.new
  foo.save # succeeds

  bar = Bar.new
  bar.save # failure, validation problem
end