aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/CHANGELOG.md
diff options
context:
space:
mode:
authorPrathamesh Sonpatki <csonpatki@gmail.com>2013-08-15 12:43:25 +0530
committerPrathamesh Sonpatki <csonpatki@gmail.com>2014-12-20 15:33:18 +0530
commit5ef713c53c49b54615be9b5a400ac5810b404e76 (patch)
tree9fd3b9b5155ce349ae2e31dbc59ea681e9983f27 /activerecord/CHANGELOG.md
parent79b71da793f100a6311861a4bc2e7cb0815ff28e (diff)
downloadrails-5ef713c53c49b54615be9b5a400ac5810b404e76.tar.gz
rails-5ef713c53c49b54615be9b5a400ac5810b404e76.tar.bz2
rails-5ef713c53c49b54615be9b5a400ac5810b404e76.zip
Allow ActiveRecord::Relation#update to run on result of a relation with callbacks and validations
- Right now, there is no method to update multiple records with validations and callbacks. - Changed the behavior of existing `update` method so that when `id` attribute is not given and the method is called on an `Relation` object, it will execute update for every record of the `Relation` and will run validations and callbacks for every record. - Added test case for validating that the callbacks run when `update` is called on a `Relation`. - Changed test_create_columns_not_equal_attributes test from persistence_test to include author_name column on topics table as it it used in before_update callback. - This change introduces performance issues when a large number of records are to be updated because it runs UPDATE query for every record of the result. The `update_all` method can be used in that case if callbacks are not required because it will only run single UPDATE for all the records.
Diffstat (limited to 'activerecord/CHANGELOG.md')
-rw-r--r--activerecord/CHANGELOG.md16
1 files changed, 16 insertions, 0 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 6494c7374e..1ade4f8751 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,3 +1,19 @@
+* Change `ActiveRecord::Relation#update` behavior so that it can
+ be called without passing ids of the records to be updated.
+
+ This change allows to update multiple records returned by
+ `ActiveRecord::Relation` with callbacks and validations.
+
+ # Before
+ # ArgumentError: wrong number of arguments (1 for 2)
+ Comment.where(group: 'expert').update(body: "Group of Rails Experts")
+
+ # After
+ # Comments with group expert updated with body "Group of Rails Experts"
+ Comment.where(group: 'expert').update(body: "Group of Rails Experts")
+
+ *Prathamesh Sonpatki*
+
* Introduce `force: :cascade` option for `create_table`. Using this option
will recreate tables even if they have dependent objects (like foreign keys).
`db/schema.rb` now uses `force: :cascade`. This makes it possible to