diff options
author | Tom Lea <contrib@tomlea.co.uk> | 2008-08-11 14:12:53 +0100 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-08-27 23:13:41 -0700 |
commit | ad562c58eabfb8b44cb8ac9e87b87a7f998325fd (patch) | |
tree | de532e0f56ea86382b12d637f32a7b4480c84c28 /activerecord/lib | |
parent | f277e1d8fddfa417104c6fe095c15559f0c8713d (diff) | |
download | rails-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.rb | 5 |
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 |