Implementing @dmathieu's cleaner fix from #1425. Unfortunately he deleted the branch so I cannot just merge it.

This commit is contained in:
Jon Leighton
2011-05-31 18:34:27 +01:00
parent 1c42bd5444
commit 9d179135b0

View File

@@ -402,9 +402,13 @@ module ActiveRecord
return memory if persisted.empty?
persisted.map! do |record|
mem_record = memory.delete(record)
# Unfortunately we cannot simply do memory.delete(record) since on 1.8 this returns
# record rather than memory.at(memory.index(record)). The behaviour is fixed in 1.9.
mem_index = memory.index(record)
if mem_index
mem_record = memory.delete_at(mem_index)
if mem_record
(record.attribute_names - mem_record.changes.keys).each do |name|
mem_record[name] = record[name]
end