diff options
author | Prathamesh Sonpatki <csonpatki@gmail.com> | 2013-08-15 12:43:25 +0530 |
---|---|---|
committer | Prathamesh Sonpatki <csonpatki@gmail.com> | 2014-12-20 15:33:18 +0530 |
commit | 5ef713c53c49b54615be9b5a400ac5810b404e76 (patch) | |
tree | 9fd3b9b5155ce349ae2e31dbc59ea681e9983f27 /activerecord/CHANGELOG.md | |
parent | 79b71da793f100a6311861a4bc2e7cb0815ff28e (diff) | |
download | rails-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.md | 16 |
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 |