Notes posted by PatrickKing
RSS feed
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.

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