2014-03-15 10:32:24 +00:00
|
|
|
* Fixed error where .persisted? throws SystemStackError for an unsaved model with a
|
|
|
|
custom primary key that didn't save due to validation error.
|
|
|
|
|
|
|
|
Fixes #14393.
|
|
|
|
|
|
|
|
*Chris Finne*
|
|
|
|
|
2014-03-23 11:09:55 +00:00
|
|
|
* Introduce `validate` as an alias for `valid?`.
|
|
|
|
|
|
|
|
This is more intuitive when you want to run validations but don't care about the return value.
|
|
|
|
|
|
|
|
*Henrik Nyh*
|
|
|
|
|
2014-03-26 23:31:32 +00:00
|
|
|
* Create indexes inline in CREATE TABLE for MySQL.
|
2014-03-26 04:13:29 +00:00
|
|
|
|
|
|
|
This is important, because adding an index on a temporary table after it has been created
|
|
|
|
would commit the transaction.
|
2014-03-26 23:31:32 +00:00
|
|
|
|
|
|
|
It also allows creating and dropping indexed tables with fewer queries and fewer permissions
|
|
|
|
required.
|
2014-03-26 04:13:29 +00:00
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
create_table :temp, temporary: true, as: "SELECT id, name, zip FROM a_really_complicated_query" do |t|
|
|
|
|
t.index :zip
|
|
|
|
end
|
|
|
|
# => CREATE TEMPORARY TABLE temp (INDEX (zip)) AS SELECT id, name, zip FROM a_really_complicated_query
|
|
|
|
|
2014-03-26 23:31:32 +00:00
|
|
|
*Cody Cutrer*, *Steve Rice*, *Rafael Mendonça Franca*
|
2014-03-26 04:13:29 +00:00
|
|
|
|
2014-03-25 18:09:48 +00:00
|
|
|
* Save `has_one` association even if the record doesn't changed.
|
|
|
|
|
|
|
|
Fixes #14407.
|
|
|
|
|
|
|
|
*Rafael Mendonça França*
|
|
|
|
|
2014-03-25 15:07:52 +00:00
|
|
|
* Use singular table name in generated migrations when
|
|
|
|
`ActiveRecord::Base.pluralize_table_names` is `false`.
|
2014-03-25 14:57:37 +00:00
|
|
|
|
|
|
|
Fixes #13426.
|
|
|
|
|
|
|
|
*Kuldeep Aggarwal*
|
|
|
|
|
2014-03-20 11:08:22 +00:00
|
|
|
* `touch` accepts many attributes to be touched at once.
|
2014-03-20 01:13:03 +00:00
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2014-03-20 11:08:22 +00:00
|
|
|
# touches :signed_at, :sealed_at, and :updated_at/on attributes.
|
|
|
|
Photo.last.touch(:signed_at, :sealed_at)
|
2014-03-20 11:00:28 +00:00
|
|
|
|
2014-03-20 01:13:03 +00:00
|
|
|
*James Pinto*
|
|
|
|
|
2014-03-20 09:30:30 +00:00
|
|
|
* `rake db:structure:dump` only dumps schema information if the schema
|
|
|
|
migration table exists.
|
|
|
|
|
|
|
|
Fixes #14217.
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
2014-03-07 13:36:09 +00:00
|
|
|
* Reap connections that were checked out by now-dead threads, instead
|
|
|
|
of waiting until they disconnect by themselves. Before this change,
|
|
|
|
a suitably constructed series of short-lived threads could starve
|
|
|
|
the connection pool, without ever having more than a couple alive at
|
|
|
|
the same time.
|
|
|
|
|
|
|
|
*Matthew Draper*
|
|
|
|
|
2013-11-19 20:50:14 +00:00
|
|
|
* `pk_and_sequence_for` now ensures that only the pg_depend entries
|
|
|
|
pointing to pg_class, and thus only sequence objects, are considered.
|
|
|
|
|
|
|
|
*Josh Williams*
|
|
|
|
|
2014-03-17 13:20:23 +00:00
|
|
|
* `where.not` adds `references` for `includes` like normal `where` calls do.
|
|
|
|
|
|
|
|
Fixes #14406.
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
2014-03-17 07:44:56 +00:00
|
|
|
* Extend fixture `$LABEL` replacement to allow string interpolation.
|
|
|
|
|
2014-03-16 01:49:04 +00:00
|
|
|
Example:
|
|
|
|
|
|
|
|
martin:
|
|
|
|
email: $LABEL@email.com
|
|
|
|
|
|
|
|
users(:martin).email # => martin@email.com
|
|
|
|
|
|
|
|
*Eric Steele*
|
2014-03-17 07:44:56 +00:00
|
|
|
|
2014-03-13 17:05:10 +00:00
|
|
|
* Add support for `Relation` be passed as parameter on `QueryCache#select_all`.
|
|
|
|
|
|
|
|
Fixes #14361.
|
|
|
|
|
|
|
|
*arthurnn*
|
|
|
|
|
2014-03-17 07:44:56 +00:00
|
|
|
* Passing an Active Record object to `find` is now deprecated. Call `.id`
|
|
|
|
on the object first.
|
2014-03-13 18:47:12 +00:00
|
|
|
|
2014-03-17 07:44:56 +00:00
|
|
|
* Passing an Active Record object to `find` or `exists?` is now deprecated.
|
|
|
|
Call `.id` on the object first.
|
2014-03-13 18:40:35 +00:00
|
|
|
|
2014-03-17 07:44:56 +00:00
|
|
|
* Only use BINARY for MySQL case sensitive uniqueness check when column has a case insensitive collation.
|
2013-11-25 19:59:18 +00:00
|
|
|
|
|
|
|
*Ryuta Kamizono*
|
|
|
|
|
2014-03-17 07:44:56 +00:00
|
|
|
* Support for MySQL 5.6 fractional seconds.
|
2014-03-12 13:15:46 +00:00
|
|
|
|
|
|
|
*arthurnn*, *Tatsuhiko Miyagawa*
|
|
|
|
|
2014-03-10 21:10:25 +00:00
|
|
|
* Support for Postgres `citext` data type enabling case-insensitive where
|
|
|
|
values without needing to wrap in UPPER/LOWER sql functions.
|
|
|
|
|
|
|
|
*Troy Kruthoff*, *Lachlan Sylvester*
|
|
|
|
|
2014-03-05 13:00:23 +00:00
|
|
|
* Allow strings to specify the `#order` value.
|
2013-05-23 03:17:15 +00:00
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
Model.order(id: 'asc').to_sql == Model.order(id: :asc).to_sql
|
|
|
|
|
2014-03-05 08:07:12 +00:00
|
|
|
*Marcelo Casiraghi*, *Robin Dupret*
|
2013-05-23 03:17:15 +00:00
|
|
|
|
2013-12-09 17:52:36 +00:00
|
|
|
* Dynamically register PostgreSQL enum OIDs. This prevents "unknown OID"
|
|
|
|
warnings on enum columns.
|
|
|
|
|
|
|
|
*Dieter Komendera*
|
|
|
|
|
2014-02-28 08:49:52 +00:00
|
|
|
* `includes` is able to detect the right preloading strategy when string
|
|
|
|
joins are involved.
|
|
|
|
|
|
|
|
Fixes #14109.
|
|
|
|
|
|
|
|
*Aaron Patterson*, *Yves Senn*
|
|
|
|
|
2014-02-26 01:24:44 +00:00
|
|
|
* Fixed error with validation with enum fields for records where the
|
|
|
|
value for any enum attribute is always evaluated as 0 during
|
|
|
|
uniqueness validation.
|
|
|
|
|
2014-03-05 08:07:12 +00:00
|
|
|
Fixes #14172.
|
2014-02-26 01:24:44 +00:00
|
|
|
|
|
|
|
*Vilius Luneckas* *Ahmed AbouElhamayed*
|
|
|
|
|
2014-03-05 08:07:12 +00:00
|
|
|
* `before_add` callbacks are fired before the record is saved on
|
|
|
|
`has_and_belongs_to_many` assocations *and* on `has_many :through`
|
|
|
|
associations. Before this change, `before_add` callbacks would be fired
|
|
|
|
before the record was saved on `has_and_belongs_to_many` associations, but
|
|
|
|
*not* on `has_many :through` associations.
|
2014-02-25 22:57:06 +00:00
|
|
|
|
2014-03-05 08:07:12 +00:00
|
|
|
Fixes #14144.
|
2014-02-25 22:57:06 +00:00
|
|
|
|
2014-02-13 19:49:19 +00:00
|
|
|
* Fixed STI classes not defining an attribute method if there is a
|
|
|
|
conflicting private method defined on its ancestors.
|
|
|
|
|
|
|
|
Fixes #11569.
|
|
|
|
|
|
|
|
*Godfrey Chan*
|
|
|
|
|
2014-03-05 08:07:12 +00:00
|
|
|
* Coerce strings when reading attributes. Fixes #10485.
|
2013-08-07 16:56:49 +00:00
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
book = Book.new(title: 12345)
|
|
|
|
book.save!
|
|
|
|
book.title # => "12345"
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
2014-01-22 13:20:01 +00:00
|
|
|
* Deprecate half-baked support for PostgreSQL range values with excluding beginnings.
|
|
|
|
We currently map PostgreSQL ranges to Ruby ranges. This conversion is not fully
|
|
|
|
possible because the Ruby range does not support excluded beginnings.
|
|
|
|
|
|
|
|
The current solution of incrementing the beginning is not correct and is now
|
|
|
|
deprecated. For subtypes where we don't know how to increment (e.g. `#succ`
|
|
|
|
is not defined) it will raise an ArgumentException for ranges with excluding
|
|
|
|
beginnings.
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
2014-01-21 11:14:11 +00:00
|
|
|
* Support for user created range types in PostgreSQL.
|
|
|
|
|
|
|
|
*Yves Senn*
|
|
|
|
|
2014-02-25 12:14:35 +00:00
|
|
|
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/activerecord/CHANGELOG.md) for previous changes.
|