rails/activerecord/CHANGELOG.md
Prathamesh Sonpatki 5ef713c53c 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.
2014-12-20 15:33:18 +05:30

2.2 KiB

  • 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 reload the schema when foreign keys are in place.

    Matthew Draper, Yves Senn

  • db:schema:load and db:structure:load no longer purge the database before loading the schema. This is left for the user to do. db:test:prepare will still purge the database.

    Closes #17945.

    Yves Senn

  • Fix undesirable RangeError by Type::Integer. Add Type::UnsignedInteger.

    Ryuta Kamizono

  • Add foreign_type option to has_one and has_many association macros.

    This option enables to define the column name of associated object's type for polymorphic associations.

    Ulisses Almeida, Kassio Borges

  • Remove deprecated behavior allowing nested arrays to be passed as query values.

    Melanie Gilman

  • Deprecate passing a class as a value in a query. Users should pass strings instead.

    Melanie Gilman

  • add_timestamps and remove_timestamps now properly reversible with options.

    Noam Gagliardi-Rabinovich

  • ActiveRecord::ConnectionAdapters::ColumnDumper#column_spec and ActiveRecord::ConnectionAdapters::ColumnDumper#prepare_column_options no longer have a types argument. They should access connection#native_database_types directly.

    Yves Senn

Please check 4-2-stable for previous changes.