aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorTom Lea <contrib@tomlea.co.uk>2008-08-11 14:12:53 +0100
committerJeremy Kemper <jeremy@bitsweat.net>2008-08-27 23:13:41 -0700
commitad562c58eabfb8b44cb8ac9e87b87a7f998325fd (patch)
treede532e0f56ea86382b12d637f32a7b4480c84c28 /activerecord/lib
parentf277e1d8fddfa417104c6fe095c15559f0c8713d (diff)
downloadrails-ad562c58eabfb8b44cb8ac9e87b87a7f998325fd.tar.gz
rails-ad562c58eabfb8b44cb8ac9e87b87a7f998325fd.tar.bz2
rails-ad562c58eabfb8b44cb8ac9e87b87a7f998325fd.zip
Dirty: treat two changes resulting in the original value as being unchanged.
[#798 state:resolved] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/dirty.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/dirty.rb b/activerecord/lib/active_record/dirty.rb
index 63bf8c8f5b..7e246e62ca 100644
--- a/activerecord/lib/active_record/dirty.rb
+++ b/activerecord/lib/active_record/dirty.rb
@@ -123,7 +123,10 @@ module ActiveRecord
attr = attr.to_s
# The attribute already has an unsaved change.
- unless changed_attributes.include?(attr)
+ if changed_attributes.include?(attr)
+ old = changed_attributes[attr]
+ changed_attributes.delete(attr) unless field_changed?(attr, old, value)
+ else
old = clone_attribute_value(:read_attribute, attr)
changed_attributes[attr] = old if field_changed?(attr, old, value)
end