2015-04-28 05:28:43 -04:00
|
|
|
|
* Make `unscope` aware of "less than" and "greater than" conditions.
|
|
|
|
|
|
|
|
|
|
*TAKAHASHI Kazuaki*
|
|
|
|
|
|
2015-04-28 05:03:18 -04:00
|
|
|
|
* `find_by` and `find_by!` raise `ArgumentError` when called without
|
|
|
|
|
arguments.
|
|
|
|
|
|
|
|
|
|
*Kohei Suzuki*
|
|
|
|
|
|
2015-04-27 04:45:22 -04:00
|
|
|
|
* Revert behavior of `db:schema:load` back to loading the full
|
|
|
|
|
environment. This ensures that initializers are run.
|
|
|
|
|
|
|
|
|
|
Fixes #19545.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2015-02-11 05:05:17 -05:00
|
|
|
|
* Fix missing index when using `timestamps` with the `index` option.
|
|
|
|
|
|
|
|
|
|
The `index` option used with `timestamps` should be passed to both
|
|
|
|
|
`column` definitions for `created_at` and `updated_at` rather than just
|
|
|
|
|
the first.
|
|
|
|
|
|
|
|
|
|
*Paul Mucur*
|
|
|
|
|
|
2015-04-20 11:47:12 -04:00
|
|
|
|
* Rename `:class` to `:anonymous_class` in association options.
|
|
|
|
|
|
|
|
|
|
Fixes #19659.
|
|
|
|
|
|
|
|
|
|
*Andrew White*
|
|
|
|
|
|
2015-04-18 10:44:26 -04:00
|
|
|
|
* Autosave existing records on a has many through association when the parent
|
|
|
|
|
is new.
|
|
|
|
|
|
|
|
|
|
Fixes #19782.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-04-08 13:04:14 -04:00
|
|
|
|
* Fixed a bug where uniqueness validations would error on out of range values,
|
|
|
|
|
even if an validation should have prevented it from hitting the database.
|
2015-04-08 12:28:45 -04:00
|
|
|
|
|
|
|
|
|
*Andrey Voronkov*
|
|
|
|
|
|
2015-04-07 12:40:16 -04:00
|
|
|
|
* MySQL: `:charset` and `:collation` support for string and text columns.
|
2014-11-09 23:53:27 -05:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
create_table :foos do |t|
|
|
|
|
|
t.string :string_utf8_bin, charset: 'utf8', collation: 'utf8_bin'
|
|
|
|
|
t.text :text_ascii, charset: 'ascii'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-04-06 04:40:14 -04:00
|
|
|
|
* Foreign key related methods in the migration DSL respect
|
|
|
|
|
`ActiveRecord::Base.pluralize_table_names = false`.
|
|
|
|
|
|
|
|
|
|
Fixes #19643.
|
|
|
|
|
|
|
|
|
|
*Mehmet Emin İNAÇ*
|
|
|
|
|
|
2015-04-22 08:44:30 -04:00
|
|
|
|
* Reduce memory usage from loading types on PostgreSQL.
|
2015-03-29 15:51:56 -04:00
|
|
|
|
|
|
|
|
|
Fixes #19578.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-04-22 08:44:30 -04:00
|
|
|
|
* Add `config.active_record.warn_on_records_fetched_greater_than` option.
|
2015-02-07 15:33:13 -05:00
|
|
|
|
|
|
|
|
|
When set to an integer, a warning will be logged whenever a result set
|
2015-04-22 08:44:30 -04:00
|
|
|
|
larger than the specified size is returned by a query.
|
|
|
|
|
|
|
|
|
|
Fixes #16463.
|
2015-02-07 15:33:13 -05:00
|
|
|
|
|
|
|
|
|
*Jason Nochlin*
|
|
|
|
|
|
2015-04-22 08:44:30 -04:00
|
|
|
|
* Ignore `.psqlrc` when loading database structure.
|
2015-03-25 04:36:49 -04:00
|
|
|
|
|
|
|
|
|
*Jason Weathered*
|
|
|
|
|
|
2015-03-24 07:00:59 -04:00
|
|
|
|
* Fix referencing wrong table aliases while joining tables of has many through
|
|
|
|
|
association (only when calling calculation methods).
|
2015-03-22 04:15:41 -04:00
|
|
|
|
|
2015-03-24 07:00:59 -04:00
|
|
|
|
Fixes #19276.
|
2015-03-22 04:15:41 -04:00
|
|
|
|
|
|
|
|
|
*pinglamb*
|
|
|
|
|
|
2015-03-23 00:17:24 -04:00
|
|
|
|
* Correctly persist a serialized attribute that has been returned to
|
|
|
|
|
its default value by an in-place modification.
|
|
|
|
|
|
|
|
|
|
Fixes #19467.
|
|
|
|
|
|
|
|
|
|
*Matthew Draper*
|
|
|
|
|
|
2015-03-22 18:11:05 -04:00
|
|
|
|
* Fix generating the schema file when using PostgreSQL `BigInt[]` data type.
|
|
|
|
|
Previously the `limit: 8` was not coming through, and this caused it to
|
|
|
|
|
become `Int[]` data type after rebuilding from the schema.
|
|
|
|
|
|
|
|
|
|
Fixes #19420.
|
|
|
|
|
|
|
|
|
|
*Jake Waller*
|
|
|
|
|
|
2015-03-15 19:13:54 -04:00
|
|
|
|
* Reuse the `CollectionAssociation#reader` cache when the foreign key is
|
|
|
|
|
available prior to save.
|
|
|
|
|
|
|
|
|
|
*Ben Woosley*
|
|
|
|
|
|
2015-03-15 19:03:56 -04:00
|
|
|
|
* Add `config.active_record.dump_schemas` to fix `db:structure:dump`
|
|
|
|
|
when using schema_search_path and PostgreSQL extensions.
|
|
|
|
|
|
|
|
|
|
Fixes #17157.
|
|
|
|
|
|
|
|
|
|
*Ryan Wallace*
|
|
|
|
|
|
2015-03-10 22:21:19 -04:00
|
|
|
|
* Renaming `use_transactional_fixtures` to `use_transactional_tests` for clarity.
|
|
|
|
|
|
|
|
|
|
Fixes #18864.
|
|
|
|
|
|
|
|
|
|
*Brandon Weiss*
|
|
|
|
|
|
2015-03-12 01:12:47 -04:00
|
|
|
|
* Increase pg gem version requirement to `~> 0.18`. Earlier versions of the
|
|
|
|
|
pg gem are known to have problems with Ruby 2.2.
|
|
|
|
|
|
|
|
|
|
*Matt Brictson*
|
|
|
|
|
|
2015-03-03 02:59:27 -05:00
|
|
|
|
* Correctly dump `serial` and `bigserial`.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-04 02:46:12 -05:00
|
|
|
|
* Fix default `format` value in `ActiveRecord::Tasks::DatabaseTasks#schema_file`.
|
|
|
|
|
|
|
|
|
|
*James Cox*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Don't enroll records in the transaction if they don't have commit callbacks.
|
|
|
|
|
This was causing a memory leak when creating many records inside a transaction.
|
2015-02-27 15:54:50 -05:00
|
|
|
|
|
|
|
|
|
Fixes #15549.
|
|
|
|
|
|
|
|
|
|
*Will Bryant*, *Aaron Patterson*
|
|
|
|
|
|
2015-02-26 14:40:22 -05:00
|
|
|
|
* Correctly create through records when created on a has many through
|
|
|
|
|
association when using `where`.
|
|
|
|
|
|
|
|
|
|
Fixes #19073.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Add `SchemaMigration.create_table` support for any unicode charsets with MySQL.
|
2014-11-12 14:30:57 -05:00
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* PostgreSQL no longer disables user triggers if system triggers can't be
|
2015-02-24 11:24:43 -05:00
|
|
|
|
disabled. Disabling user triggers does not fulfill what the method promises.
|
|
|
|
|
Rails currently requires superuser privileges for this method.
|
|
|
|
|
|
|
|
|
|
If you absolutely rely on this behavior, consider patching
|
|
|
|
|
`disable_referential_integrity`.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
|
|
|
|
* Restore aborted transaction state when `disable_referential_integrity` fails
|
|
|
|
|
due to missing permissions.
|
|
|
|
|
|
|
|
|
|
*Toby Ovod-Everett*, *Yves Senn*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* In PostgreSQL, print a warning message if `disable_referential_integrity`
|
|
|
|
|
fails due to missing permissions.
|
2015-02-24 11:24:43 -05:00
|
|
|
|
|
|
|
|
|
*Andrey Nering*, *Yves Senn*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Allow a `:limit` option for MySQL bigint primary key support.
|
2014-11-15 13:08:46 -05:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
create_table :foos, id: :primary_key, limit: 8 do |t|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# or
|
|
|
|
|
|
|
|
|
|
create_table :foos, id: false do |t|
|
|
|
|
|
t.primary_key :id, limit: 8
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-02-13 21:24:54 -05:00
|
|
|
|
* `belongs_to` will now trigger a validation error by default if the association is not present.
|
|
|
|
|
You can turn this off on a per-association basis with `optional: true`.
|
|
|
|
|
(Note this new default only applies to new Rails apps that will be generated with
|
|
|
|
|
`config.active_record.belongs_to_required_by_default = true` in initializer.)
|
|
|
|
|
|
|
|
|
|
*Josef Šimánek*
|
|
|
|
|
|
2015-02-23 10:54:40 -05:00
|
|
|
|
* Fixed ActiveRecord::Relation#becomes! and changed_attributes issues for type
|
2015-03-19 00:34:11 -04:00
|
|
|
|
columns.
|
2014-10-02 04:02:30 -04:00
|
|
|
|
|
|
|
|
|
Fixes #17139.
|
|
|
|
|
|
|
|
|
|
*Miklos Fazekas*
|
|
|
|
|
|
2015-02-12 13:04:47 -05:00
|
|
|
|
* Format the time string according to the precision of the time column.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Allow a `:precision` option for time type columns.
|
2015-02-09 19:04:47 -05:00
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-02-19 06:08:10 -05:00
|
|
|
|
* Add `ActiveRecord::Base.suppress` to prevent the receiver from being saved
|
2015-02-18 17:55:48 -05:00
|
|
|
|
during the given block.
|
|
|
|
|
|
|
|
|
|
For example, here's a pattern of creating notifications when new comments
|
|
|
|
|
are posted. (The notification may in turn trigger an email, a push
|
|
|
|
|
notification, or just appear in the UI somewhere):
|
|
|
|
|
|
2015-02-19 06:08:10 -05:00
|
|
|
|
class Comment < ActiveRecord::Base
|
|
|
|
|
belongs_to :commentable, polymorphic: true
|
|
|
|
|
after_create -> { Notification.create! comment: self,
|
|
|
|
|
recipients: commentable.recipients }
|
|
|
|
|
end
|
2015-02-18 17:55:48 -05:00
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
That's what you want the bulk of the time. A new comment creates a new
|
|
|
|
|
Notification. There may be edge cases where you don't want that, like
|
|
|
|
|
when copying a commentable and its comments, in which case write a
|
|
|
|
|
concern with something like this:
|
2015-02-18 17:55:48 -05:00
|
|
|
|
|
2015-02-19 06:08:10 -05:00
|
|
|
|
module Copyable
|
|
|
|
|
def copy_to(destination)
|
|
|
|
|
Notification.suppress do
|
|
|
|
|
# Copy logic that creates new comments that we do not want triggering
|
|
|
|
|
# notifications.
|
|
|
|
|
end
|
|
|
|
|
end
|
2015-02-18 17:55:48 -05:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
*Michael Ryan*
|
|
|
|
|
|
2015-02-23 10:54:40 -05:00
|
|
|
|
* `:time` option added for `#touch`.
|
|
|
|
|
|
2015-02-16 01:30:41 -05:00
|
|
|
|
Fixes #18905.
|
|
|
|
|
|
|
|
|
|
*Hyonjee Joo*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Deprecate passing of `start` value to `find_in_batches` and `find_each`
|
2015-02-16 17:16:49 -05:00
|
|
|
|
in favour of `begin_at` value.
|
|
|
|
|
|
|
|
|
|
*Vipul A M*
|
|
|
|
|
|
2015-02-16 03:08:38 -05:00
|
|
|
|
* Add `foreign_key_exists?` method.
|
|
|
|
|
|
|
|
|
|
*Tõnis Simo*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Use SQL COUNT and LIMIT 1 queries for `none?` and `one?` methods
|
|
|
|
|
if no block or limit is given, instead of loading the entire
|
|
|
|
|
collection into memory. This applies to relations (e.g. `User.all`)
|
|
|
|
|
as well as associations (e.g. `account.users`)
|
2013-10-28 02:58:23 -04:00
|
|
|
|
|
|
|
|
|
# Before:
|
|
|
|
|
|
|
|
|
|
users.none?
|
|
|
|
|
# SELECT "users".* FROM "users"
|
|
|
|
|
|
|
|
|
|
users.one?
|
|
|
|
|
# SELECT "users".* FROM "users"
|
|
|
|
|
|
|
|
|
|
# After:
|
|
|
|
|
|
|
|
|
|
users.none?
|
|
|
|
|
# SELECT 1 AS one FROM "users" LIMIT 1
|
|
|
|
|
|
|
|
|
|
users.one?
|
|
|
|
|
# SELECT COUNT(*) FROM "users"
|
|
|
|
|
|
|
|
|
|
*Eugene Gilburg*
|
|
|
|
|
|
2015-02-11 16:56:26 -05:00
|
|
|
|
* Have `enum` perform type casting consistently with the rest of Active
|
|
|
|
|
Record, such as `where`.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-02-11 15:40:28 -05:00
|
|
|
|
* `scoping` no longer pollutes the current scope of sibling classes when using
|
|
|
|
|
STI. e.x.
|
|
|
|
|
|
2015-02-23 10:54:40 -05:00
|
|
|
|
StiOne.none.scoping do
|
|
|
|
|
StiTwo.all
|
|
|
|
|
end
|
2015-02-11 15:40:28 -05:00
|
|
|
|
|
|
|
|
|
Fixes #18806.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-02-11 05:09:29 -05:00
|
|
|
|
* `remove_reference` with `foreign_key: true` removes the foreign key before
|
|
|
|
|
removing the column. This fixes a bug where it was not possible to remove
|
|
|
|
|
the column on MySQL.
|
|
|
|
|
|
|
|
|
|
Fixes #18664.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2013-09-17 02:24:58 -04:00
|
|
|
|
* `find_in_batches` now accepts an `:end_at` parameter that complements the `:start`
|
|
|
|
|
parameter to specify where to stop batch processing.
|
|
|
|
|
|
|
|
|
|
*Vipul A M*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fix a rounding problem for PostgreSQL timestamp columns.
|
2015-01-31 23:02:56 -05:00
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
If a timestamp column has a precision specified, it needs to
|
|
|
|
|
format according to that.
|
2015-01-31 23:02:56 -05:00
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2014-11-12 14:30:57 -05:00
|
|
|
|
* Respect the database default charset for `schema_migrations` table.
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
The charset of `version` column in `schema_migrations` table depends
|
2014-11-12 14:30:57 -05:00
|
|
|
|
on the database default charset and collation rather than the encoding
|
|
|
|
|
of the connection.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-02-06 14:50:45 -05:00
|
|
|
|
* Raise `ArgumentError` when passing `nil` or `false` to `Relation#merge`.
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
These are not valid values to merge in a relation, so it should warn users
|
2015-02-06 14:50:45 -05:00
|
|
|
|
early.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Use `SCHEMA` instead of `DB_STRUCTURE` for specifying a structure file.
|
2015-01-08 04:02:58 -05:00
|
|
|
|
|
|
|
|
|
This makes the db:structure tasks consistent with test:load_structure.
|
|
|
|
|
|
|
|
|
|
*Dieter Komendera*
|
|
|
|
|
|
2015-02-04 10:44:48 -05:00
|
|
|
|
* Respect custom primary keys for associations when calling `Relation#where`
|
|
|
|
|
|
|
|
|
|
Fixes #18813.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fix several edge cases which could result in a counter cache updating
|
2015-02-03 15:25:15 -05:00
|
|
|
|
twice or not updating at all for `has_many` and `has_many :through`.
|
|
|
|
|
|
|
|
|
|
Fixes #10865.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-02-02 18:41:12 -05:00
|
|
|
|
* Foreign keys added by migrations were given random, generated names. This
|
|
|
|
|
meant a different `structure.sql` would be generated every time a developer
|
|
|
|
|
ran migrations on their machine.
|
|
|
|
|
|
|
|
|
|
The generated part of foreign key names is now a hash of the table name and
|
|
|
|
|
column name, which is consistent every time you run the migration.
|
|
|
|
|
|
|
|
|
|
*Chris Sinjakli*
|
|
|
|
|
|
2015-01-10 16:46:57 -05:00
|
|
|
|
* Validation errors would be raised for parent records when an association
|
|
|
|
|
was saved when the parent had `validate: false`. It should not be the
|
|
|
|
|
responsibility of the model to validate an associated object unless the
|
|
|
|
|
object was created or modified by the parent.
|
|
|
|
|
|
|
|
|
|
This fixes the issue by skipping validations if the parent record is
|
|
|
|
|
persisted, not changed, and not marked for destruction.
|
|
|
|
|
|
|
|
|
|
Fixes #17621.
|
|
|
|
|
|
|
|
|
|
*Eileen M. Uchitelle, Aaron Patterson*
|
|
|
|
|
|
2015-01-03 14:30:30 -05:00
|
|
|
|
* Fix n+1 query problem when eager loading nil associations (fixes #18312)
|
|
|
|
|
|
|
|
|
|
*Sammy Larbi*
|
|
|
|
|
|
2015-02-01 07:31:53 -05:00
|
|
|
|
* Change the default error message from `can't be blank` to `must exist` for
|
2015-03-19 00:34:11 -04:00
|
|
|
|
the presence validator of the `:required` option on `belongs_to`/`has_one`
|
|
|
|
|
associations.
|
2015-02-01 07:31:53 -05:00
|
|
|
|
|
|
|
|
|
*Henrik Nygren*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fixed ActiveRecord::Relation#group method when an argument is an SQL
|
|
|
|
|
reserved key word:
|
2015-01-29 10:02:12 -05:00
|
|
|
|
|
2015-01-31 05:54:00 -05:00
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
SplitTest.group(:key).count
|
|
|
|
|
Property.group(:value).count
|
2015-01-29 10:02:12 -05:00
|
|
|
|
|
|
|
|
|
*Bogdan Gusiev*
|
|
|
|
|
|
2014-06-22 23:42:46 -04:00
|
|
|
|
* Added the `#or` method on ActiveRecord::Relation, allowing use of the OR
|
|
|
|
|
operator to combine WHERE or HAVING clauses.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Post.where('id = 1').or(Post.where('id = 2'))
|
|
|
|
|
# => SELECT * FROM posts WHERE (id = 1) OR (id = 2)
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*, *Matthew Draper*, *Gael Muller*, *Olivier El Mekki*
|
|
|
|
|
|
2015-01-28 11:36:42 -05:00
|
|
|
|
* Don't define autosave association callbacks twice from
|
|
|
|
|
`accepts_nested_attributes_for`.
|
|
|
|
|
|
|
|
|
|
Fixes #18704.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-23 16:22:53 -05:00
|
|
|
|
* Integer types will no longer raise a `RangeError` when assigning an
|
|
|
|
|
attribute, but will instead raise when going to the database.
|
|
|
|
|
|
|
|
|
|
Fixes several vague issues which were never reported directly. See the
|
|
|
|
|
commit message from the commit which added this line for some examples.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-23 14:47:41 -05:00
|
|
|
|
* Values which would error while being sent to the database (such as an
|
2015-02-10 14:13:51 -05:00
|
|
|
|
ASCII-8BIT string with invalid UTF-8 bytes on SQLite3), no longer error on
|
2015-01-23 14:47:41 -05:00
|
|
|
|
assignment. They will still error when sent to the database, but you are
|
|
|
|
|
given the ability to re-assign it to a valid value.
|
|
|
|
|
|
|
|
|
|
Fixes #18580.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-23 14:04:13 -05:00
|
|
|
|
* Don't remove join dependencies in `Relation#exists?`
|
|
|
|
|
|
2015-01-23 14:47:41 -05:00
|
|
|
|
Fixes #18632.
|
2015-01-23 14:04:13 -05:00
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-21 13:47:11 -05:00
|
|
|
|
* Invalid values assigned to a JSON column are assumed to be `nil`.
|
|
|
|
|
|
|
|
|
|
Fixes #18629.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-20 16:09:53 -05:00
|
|
|
|
* Add `ActiveRecord::Base#accessed_fields`, which can be used to quickly
|
|
|
|
|
discover which fields were read from a model when you are looking to only
|
|
|
|
|
select the data you need from the database.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2014-08-01 10:13:38 -04:00
|
|
|
|
* Introduce the `:if_exists` option for `drop_table`.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
drop_table(:posts, if_exists: true)
|
|
|
|
|
|
|
|
|
|
That would execute:
|
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS posts
|
|
|
|
|
|
|
|
|
|
If the table doesn't exist, `if_exists: false` (the default) raises an
|
|
|
|
|
exception whereas `if_exists: true` does nothing.
|
|
|
|
|
|
|
|
|
|
*Cody Cutrer*, *Stefan Kanev*, *Ryuta Kamizono*
|
|
|
|
|
|
2015-01-11 03:23:28 -05:00
|
|
|
|
* Don't run SQL if attribute value is not changed for update_attribute method.
|
|
|
|
|
|
|
|
|
|
*Prathamesh Sonpatki*
|
|
|
|
|
|
2015-01-18 22:27:22 -05:00
|
|
|
|
* `time` columns can now get affected by `time_zone_aware_attributes`. If you have
|
2014-06-14 10:06:51 -04:00
|
|
|
|
set `config.time_zone` to a value other than `'UTC'`, they will be treated
|
2015-01-16 12:40:58 -05:00
|
|
|
|
as in that time zone by default in Rails 5.1. If this is not the desired
|
2014-06-14 10:06:51 -04:00
|
|
|
|
behavior, you can set
|
|
|
|
|
|
|
|
|
|
ActiveRecord::Base.time_zone_aware_types = [:datetime]
|
|
|
|
|
|
|
|
|
|
A deprecation warning will be emitted if you have a `:time` column, and have
|
|
|
|
|
not explicitly opted out.
|
|
|
|
|
|
2015-01-31 05:54:00 -05:00
|
|
|
|
Fixes #3145.
|
2014-06-14 10:06:51 -04:00
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-11 18:38:22 -05:00
|
|
|
|
* Tests now run after_commit callbacks. You no longer have to declare
|
|
|
|
|
`uses_transaction ‘test name’` to test the results of an after_commit.
|
|
|
|
|
|
|
|
|
|
after_commit callbacks run after committing a transaction whose parent
|
|
|
|
|
is not `joinable?`: un-nested transactions, transactions within test cases,
|
|
|
|
|
and transactions in `console --sandbox`.
|
|
|
|
|
|
|
|
|
|
*arthurnn*, *Ravil Bayramgalin*, *Matthew Draper*
|
|
|
|
|
|
2015-01-10 14:24:10 -05:00
|
|
|
|
* `nil` as a value for a binary column in a query no longer logs as
|
|
|
|
|
"<NULL binary data>", and instead logs as just "nil".
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-10 13:57:14 -05:00
|
|
|
|
* `attribute_will_change!` will no longer cause non-persistable attributes to
|
|
|
|
|
be sent to the database.
|
|
|
|
|
|
|
|
|
|
Fixes #18407.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2015-01-09 18:55:52 -05:00
|
|
|
|
* Remove support for the `protected_attributes` gem.
|
|
|
|
|
|
2015-01-10 06:17:57 -05:00
|
|
|
|
*Carlos Antonio da Silva*, *Roberto Miranda*
|
2015-01-09 18:55:52 -05:00
|
|
|
|
|
2015-01-06 07:31:34 -05:00
|
|
|
|
* Fix accessing of fixtures having non-string labels like Fixnum.
|
2015-01-06 04:24:41 -05:00
|
|
|
|
|
|
|
|
|
*Prathamesh Sonpatki*
|
|
|
|
|
|
2015-01-05 05:49:02 -05:00
|
|
|
|
* Remove deprecated support to preload instance-dependent associations.
|
2015-01-05 05:44:14 -05:00
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2015-01-05 05:09:29 -05:00
|
|
|
|
* Remove deprecated support for PostgreSQL ranges with exclusive lower bounds.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Remove deprecation when modifying a relation with cached Arel.
|
2015-01-05 04:08:06 -05:00
|
|
|
|
This raises an `ImmutableRelation` error instead.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2015-01-05 03:16:40 -05:00
|
|
|
|
* Added `ActiveRecord::SecureToken` in order to encapsulate generation of
|
|
|
|
|
unique tokens for attributes in a model using `SecureRandom`.
|
2014-12-28 17:24:10 -05:00
|
|
|
|
|
|
|
|
|
*Roberto Miranda*
|
|
|
|
|
|
2015-01-04 09:31:58 -05:00
|
|
|
|
* Change the behavior of boolean columns to be closer to Ruby's semantics.
|
|
|
|
|
|
|
|
|
|
Before this change we had a small set of "truthy", and all others are "falsy".
|
|
|
|
|
|
|
|
|
|
Now, we have a small set of "falsy" values and all others are "truthy" matching
|
|
|
|
|
Ruby's semantics.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-04 09:23:57 -05:00
|
|
|
|
* Deprecate `ActiveRecord::Base.errors_in_transactional_callbacks=`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-06 08:04:20 -05:00
|
|
|
|
* Change transaction callbacks to not swallow errors.
|
2015-01-04 09:23:57 -05:00
|
|
|
|
|
2015-01-06 08:04:20 -05:00
|
|
|
|
Before this change any errors raised inside a transaction callback
|
|
|
|
|
were getting rescued and printed in the logs.
|
2015-01-04 09:23:57 -05:00
|
|
|
|
|
2015-01-06 08:04:20 -05:00
|
|
|
|
Now these errors are not rescued anymore and just bubble up, as the other callbacks.
|
2015-01-04 09:23:57 -05:00
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-04 09:07:03 -05:00
|
|
|
|
* Remove deprecated `sanitize_sql_hash_for_conditions`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-04 08:49:49 -05:00
|
|
|
|
* Remove deprecated `Reflection#source_macro`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 23:03:53 -05:00
|
|
|
|
* Remove deprecated `symbolized_base_class` and `symbolized_sti_name`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 22:45:54 -05:00
|
|
|
|
* Remove deprecated `ActiveRecord::Base.disable_implicit_join_references=`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-06 08:04:20 -05:00
|
|
|
|
* Remove deprecated access to connection specification using a string accessor.
|
2015-01-03 22:32:18 -05:00
|
|
|
|
|
|
|
|
|
Now all strings will be handled as a URL.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 22:24:40 -05:00
|
|
|
|
* Change the default `null` value for `timestamps` to `false`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 21:49:41 -05:00
|
|
|
|
* Return an array of pools from `connection_pools`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 21:42:59 -05:00
|
|
|
|
* Return a null column from `column_for_attribute` when no column exists.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 21:36:27 -05:00
|
|
|
|
* Remove deprecated `serialized_attributes`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-01-03 21:19:29 -05:00
|
|
|
|
* Remove deprecated automatic counter caches on `has_many :through`.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2014-12-24 03:58:19 -05:00
|
|
|
|
* Change the way in which callback chains can be halted.
|
|
|
|
|
|
|
|
|
|
The preferred method to halt a callback chain from now on is to explicitly
|
|
|
|
|
`throw(:abort)`.
|
|
|
|
|
In the past, returning `false` in an ActiveRecord `before_` callback had the
|
|
|
|
|
side effect of halting the callback chain.
|
|
|
|
|
This is not recommended anymore and, depending on the value of the
|
|
|
|
|
`config.active_support.halt_callback_chains_on_return_false` option, will
|
|
|
|
|
either not work at all or display a deprecation warning.
|
2014-12-15 01:10:15 -05:00
|
|
|
|
|
|
|
|
|
*claudiob*
|
|
|
|
|
|
2015-01-02 12:34:25 -05:00
|
|
|
|
* Clear query cache on rollback.
|
2014-11-24 06:04:01 -05:00
|
|
|
|
|
2015-01-02 12:34:25 -05:00
|
|
|
|
*Florian Weingarten*
|
2014-11-24 06:04:01 -05:00
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fix setting of foreign_key for through associations when building a new record.
|
2014-05-25 10:08:11 -04:00
|
|
|
|
|
|
|
|
|
Fixes #12698.
|
|
|
|
|
|
|
|
|
|
*Ivan Antropov*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Improve dumping of the primary key. If it is not a default primary key,
|
2014-12-11 08:57:28 -05:00
|
|
|
|
correctly dump the type and options.
|
|
|
|
|
|
|
|
|
|
Fixes #14169, #16599.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2014-12-17 02:01:28 -05:00
|
|
|
|
* Format the datetime string according to the precision of the datetime field.
|
|
|
|
|
|
|
|
|
|
Incompatible to rounding behavior between MySQL 5.6 and earlier.
|
|
|
|
|
|
|
|
|
|
In 5.5, when you insert `2014-08-17 12:30:00.999999` the fractional part
|
|
|
|
|
is ignored. In 5.6, it's rounded to `2014-08-17 12:30:01`:
|
|
|
|
|
|
|
|
|
|
http://bugs.mysql.com/bug.php?id=68760
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Allow a precision option for MySQL datetimes.
|
2014-11-19 05:59:14 -05:00
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fixed automatic `inverse_of` for models nested in a module.
|
2014-06-15 19:15:32 -04:00
|
|
|
|
|
|
|
|
|
*Andrew McCloud*
|
|
|
|
|
|
2013-08-15 03:13:25 -04:00
|
|
|
|
* Change `ActiveRecord::Relation#update` behavior so that it can
|
|
|
|
|
be called without passing ids of the records to be updated.
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
This change allows updating multiple records returned by
|
2013-08-15 03:13:25 -04:00
|
|
|
|
`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*
|
|
|
|
|
|
2015-01-01 23:35:29 -05:00
|
|
|
|
* Fix `reaping_frequency` option when the value is a string.
|
|
|
|
|
|
|
|
|
|
This usually happens when it is configured using `DATABASE_URL`.
|
|
|
|
|
|
|
|
|
|
*korbin*
|
|
|
|
|
|
2014-12-30 18:59:27 -05:00
|
|
|
|
* Fix error message when trying to create an associated record and the foreign
|
|
|
|
|
key is missing.
|
|
|
|
|
|
|
|
|
|
Before this fix the following exception was being raised:
|
|
|
|
|
|
|
|
|
|
NoMethodError: undefined method `val' for #<Arel::Nodes::BindParam:0x007fc64d19c218>
|
|
|
|
|
|
|
|
|
|
Now the message is:
|
|
|
|
|
|
|
|
|
|
ActiveRecord::UnknownAttributeError: unknown attribute 'foreign_key' for Model.
|
|
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
|
2015-03-19 08:57:18 -04:00
|
|
|
|
* Fix change detection problem for PostgreSQL bytea type and
|
|
|
|
|
`ArgumentError: string contains null byte` exception with pg-0.18.
|
|
|
|
|
|
|
|
|
|
Fixes #17680.
|
|
|
|
|
|
|
|
|
|
*Lars Kanis*
|
|
|
|
|
|
2014-12-30 13:37:22 -05:00
|
|
|
|
* When a table has a composite primary key, the `primary_key` method for
|
|
|
|
|
SQLite3 and PostgreSQL adapters was only returning the first field of the key.
|
|
|
|
|
Ensures that it will return nil instead, as Active Record doesn't support
|
|
|
|
|
composite primary keys.
|
2014-12-30 12:36:37 -05:00
|
|
|
|
|
|
|
|
|
Fixes #18070.
|
|
|
|
|
|
|
|
|
|
*arthurnn*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* `validates_size_of` / `validates_length_of` do not count records
|
2013-03-25 10:58:23 -04:00
|
|
|
|
which are `marked_for_destruction?`.
|
|
|
|
|
|
|
|
|
|
Fixes #7247.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2014-12-29 13:55:50 -05:00
|
|
|
|
* Ensure `first!` and friends work on loaded associations.
|
|
|
|
|
|
|
|
|
|
Fixes #18237.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2014-12-19 11:04:47 -05:00
|
|
|
|
* `eager_load` preserves readonly flag for associations.
|
|
|
|
|
|
|
|
|
|
Closes #15853.
|
|
|
|
|
|
|
|
|
|
*Takashi Kokubun*
|
|
|
|
|
|
2014-12-28 16:25:42 -05:00
|
|
|
|
* Provide `:touch` option to `save()` to accommodate saving without updating
|
2014-12-27 18:17:57 -05:00
|
|
|
|
timestamps.
|
|
|
|
|
|
2014-12-28 16:25:42 -05:00
|
|
|
|
Fixes #18202.
|
2014-12-27 18:17:57 -05:00
|
|
|
|
|
|
|
|
|
*Dan Olson*
|
|
|
|
|
|
2014-12-27 21:46:36 -05:00
|
|
|
|
* Provide a more helpful error message when an unsupported class is passed to
|
2014-12-28 16:25:42 -05:00
|
|
|
|
`serialize`.
|
2014-12-27 21:46:36 -05:00
|
|
|
|
|
2014-12-28 16:25:42 -05:00
|
|
|
|
Fixes #18224.
|
2014-12-27 21:46:36 -05:00
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2014-12-27 07:56:00 -05:00
|
|
|
|
* Add bigint primary key support for MySQL.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
create_table :foos, id: :bigint do |t|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Support for any type of primary key.
|
2014-11-15 13:08:46 -05:00
|
|
|
|
|
|
|
|
|
Fixes #14194.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2014-12-26 03:45:12 -05:00
|
|
|
|
* Dump the default `nil` for PostgreSQL UUID primary key.
|
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2014-12-23 09:20:39 -05:00
|
|
|
|
* Add a `:foreign_key` option to `references` and associated migration
|
|
|
|
|
methods. The model and migration generators now use this option, rather than
|
|
|
|
|
the `add_foreign_key` form.
|
|
|
|
|
|
|
|
|
|
*Sean Griffin*
|
|
|
|
|
|
2014-12-22 21:30:00 -05:00
|
|
|
|
* Don't raise when writing an attribute with an out-of-range datetime passed
|
|
|
|
|
by the user.
|
|
|
|
|
|
|
|
|
|
*Grey Baker*
|
|
|
|
|
|
2014-12-23 06:07:15 -05:00
|
|
|
|
* Replace deprecated `ActiveRecord::Tasks::DatabaseTasks#load_schema` with
|
|
|
|
|
`ActiveRecord::Tasks::DatabaseTasks#load_schema_for`.
|
|
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
|
2015-03-19 00:34:11 -04:00
|
|
|
|
* Fix bug with 'ActiveRecord::Type::Numeric' that caused negative values to
|
2014-12-23 01:19:14 -05:00
|
|
|
|
be marked as having changed when set to the same negative value.
|
|
|
|
|
|
2014-12-23 02:56:17 -05:00
|
|
|
|
Closes #18161.
|
2014-12-23 01:19:14 -05:00
|
|
|
|
|
|
|
|
|
*Daniel Fox*
|
|
|
|
|
|
2014-12-18 04:07:23 -05:00
|
|
|
|
* 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*
|
|
|
|
|
|
2014-12-16 03:58:34 -05:00
|
|
|
|
* `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*
|
|
|
|
|
|
2014-12-23 02:56:17 -05:00
|
|
|
|
* Fix undesirable RangeError by `Type::Integer`. Add `Type::UnsignedInteger`.
|
2014-11-26 20:06:49 -05:00
|
|
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
|
2014-12-08 14:43:16 -05:00
|
|
|
|
* 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.
|
|
|
|
|
|
2015-01-10 06:17:57 -05:00
|
|
|
|
*Ulisses Almeida*, *Kassio Borges*
|
2014-12-08 14:43:16 -05:00
|
|
|
|
|
2014-12-04 14:51:41 -05:00
|
|
|
|
* Remove deprecated behavior allowing nested arrays to be passed as query
|
|
|
|
|
values.
|
|
|
|
|
|
|
|
|
|
*Melanie Gilman*
|
|
|
|
|
|
2014-12-04 09:49:51 -05:00
|
|
|
|
* Deprecate passing a class as a value in a query. Users should pass strings
|
|
|
|
|
instead.
|
|
|
|
|
|
|
|
|
|
*Melanie Gilman*
|
|
|
|
|
|
2014-12-03 13:27:13 -05:00
|
|
|
|
* `add_timestamps` and `remove_timestamps` now properly reversible with
|
|
|
|
|
options.
|
|
|
|
|
|
|
|
|
|
*Noam Gagliardi-Rabinovich*
|
|
|
|
|
|
2014-11-06 10:40:51 -05:00
|
|
|
|
* `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*
|
|
|
|
|
|
2014-12-03 13:29:26 -05:00
|
|
|
|
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md) for previous changes.
|