aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-04-28 00:15:44 -0700
committerJosé Valim <jose.valim@gmail.com>2012-04-28 00:15:44 -0700
commitd0e1c692b455093ca958a70e2d729b8b17b3f02b (patch)
treeeea4a6b99c3161b4809167a505b185c18481901e
parentdd5524a70741e75d6232d0933f57793a33de5482 (diff)
parent9d1f6edbe0aa6f95f55464136e39fb4e2e4643f2 (diff)
downloadrails-d0e1c692b455093ca958a70e2d729b8b17b3f02b.tar.gz
rails-d0e1c692b455093ca958a70e2d729b8b17b3f02b.tar.bz2
rails-d0e1c692b455093ca958a70e2d729b8b17b3f02b.zip
Merge pull request #6024 from carlosantoniodasilva/amo-dirty-refactor
Improve AMo::Dirty *_will_change! method
-rw-r--r--activemodel/lib/active_model/dirty.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/dirty.rb b/activemodel/lib/active_model/dirty.rb
index d327913824..7f7fb90d87 100644
--- a/activemodel/lib/active_model/dirty.rb
+++ b/activemodel/lib/active_model/dirty.rb
@@ -151,13 +151,15 @@ module ActiveModel
# Handle <tt>*_will_change!</tt> for +method_missing+.
def attribute_will_change!(attr)
+ return if attribute_changed?(attr)
+
begin
value = __send__(attr)
value = value.duplicable? ? value.clone : value
rescue TypeError, NoMethodError
end
- changed_attributes[attr] = value unless changed_attributes.include?(attr)
+ changed_attributes[attr] = value
end
# Handle <tt>reset_*!</tt> for +method_missing+.