diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-12-01 11:00:53 -0800 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-12-01 11:00:53 -0800 |
commit | 42efdbf23e14fec629e32c6339ec4e8c85ae1701 (patch) | |
tree | 33b0511025d8a290c5d0a9298a37891eb2dde1d7 /activemodel | |
parent | 90e2d96079ef262ba015c2ff86a25c332a1cc497 (diff) | |
parent | cf7ab6056adfd1d2feb98444d82f89adcb6e5533 (diff) | |
download | rails-42efdbf23e14fec629e32c6339ec4e8c85ae1701.tar.gz rails-42efdbf23e14fec629e32c6339ec4e8c85ae1701.tar.bz2 rails-42efdbf23e14fec629e32c6339ec4e8c85ae1701.zip |
Merge pull request #8391 from rmascarenhas/reset-attribute-doesnt-change-it
Reset attributes should not report changes.
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activemodel/lib/active_model/dirty.rb | 5 | ||||
-rw-r--r-- | activemodel/test/cases/dirty_test.rb | 3 |
3 files changed, 9 insertions, 3 deletions
diff --git a/activemodel/CHANGELOG.md b/activemodel/CHANGELOG.md index aacef97858..b955e98835 100644 --- a/activemodel/CHANGELOG.md +++ b/activemodel/CHANGELOG.md @@ -1,5 +1,9 @@ ## Rails 4.0.0 (unreleased) ## +* `[attribute]_changed?` now returns `false` after a call to `reset_[attribute]!` + + *Renato Mascarenhas* + * Observers was extracted from Active Model as `rails-observers` gem. *Rafael Mendonça França* diff --git a/activemodel/lib/active_model/dirty.rb b/activemodel/lib/active_model/dirty.rb index d47c3ae1bb..ecb7a9e9b1 100644 --- a/activemodel/lib/active_model/dirty.rb +++ b/activemodel/lib/active_model/dirty.rb @@ -174,7 +174,10 @@ module ActiveModel # Handle <tt>reset_*!</tt> for +method_missing+. def reset_attribute!(attr) - __send__("#{attr}=", changed_attributes[attr]) if attribute_changed?(attr) + if attribute_changed?(attr) + __send__("#{attr}=", changed_attributes[attr]) + changed_attributes.delete(attr) + end end end end diff --git a/activemodel/test/cases/dirty_test.rb b/activemodel/test/cases/dirty_test.rb index eaaf910bac..0b9f9537e2 100644 --- a/activemodel/test/cases/dirty_test.rb +++ b/activemodel/test/cases/dirty_test.rb @@ -78,7 +78,7 @@ class DirtyTest < ActiveModel::TestCase @model.name = "Bob" @model.reset_name! assert_nil @model.name - #assert !@model.name_changed #Doesn't work yet + assert !@model.name_changed? end test "setting color to same value should not result in change being recorded" do @@ -114,5 +114,4 @@ class DirtyTest < ActiveModel::TestCase assert_equal ["Otto", "Mr. Manfredgensonton"], @model.name_change assert_equal @model.name_was, "Otto" end - end |