diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2016-09-23 09:51:39 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-23 09:51:39 -0700 |
commit | abe3da9f12710ea85be69b17172bef41220037fc (patch) | |
tree | 3e88ad35bf3ff727259213a8fd9dd7e9f96eebff /activerecord | |
parent | 3b0da83c81047c783d1fe730691d367e286fbf1a (diff) | |
parent | 730e99affb5824363599ec25445b9450b6247fde (diff) | |
download | rails-abe3da9f12710ea85be69b17172bef41220037fc.tar.gz rails-abe3da9f12710ea85be69b17172bef41220037fc.tar.bz2 rails-abe3da9f12710ea85be69b17172bef41220037fc.zip |
Merge pull request #26595 from prathamesh-sonpatki/fix-26593
Return true if attribute is not changed for update_attribute
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG.md | 7 | ||||
-rw-r--r-- | activerecord/lib/active_record/persistence.rb | 3 | ||||
-rw-r--r-- | activerecord/test/cases/persistence_test.rb | 6 |
3 files changed, 12 insertions, 4 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 6cc667b754..41e05dd8c1 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,10 @@ +* Return `true` from `update_attribute` when the value of the attribute + to be updated is unchanged. + + Fixes #26593. + + *Prathamesh Sonpatki* + * Always store errors details information with symbols. When the association is autosaved we were storing the details with diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 978fb27cab..65248f3a32 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -252,7 +252,8 @@ module ActiveRecord name = name.to_s verify_readonly_attribute(name) public_send("#{name}=", value) - save(validate: false) if changed? + + changed? ? save(validate: false) : true end # Updates the attributes of the model from the passed-in hash and saves the diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb index d83360e327..688c3ed2b1 100644 --- a/activerecord/test/cases/persistence_test.rb +++ b/activerecord/test/cases/persistence_test.rb @@ -391,14 +391,14 @@ class PersistenceTest < ActiveRecord::TestCase end topic = klass.create(title: "Another New Topic") assert_queries(0) do - topic.update_attribute(:title, "Another New Topic") + assert topic.update_attribute(:title, "Another New Topic") end end def test_update_does_not_run_sql_if_record_has_not_changed topic = Topic.create(title: "Another New Topic") - assert_queries(0) { topic.update(title: "Another New Topic") } - assert_queries(0) { topic.update_attributes(title: "Another New Topic") } + assert_queries(0) { assert topic.update(title: "Another New Topic") } + assert_queries(0) { assert topic.update_attributes(title: "Another New Topic") } end def test_delete |