Commit Graph

14501 Commits

Author SHA1 Message Date
Lucjan Suski
9d21a7fc50 Pass SQL group by values when including scoped association
Fixes problem when added `group()` in association scope was lost
in eager loaded association.
2015-12-15 17:58:57 +01:00
Eileen M. Uchitelle
e73fe1dd8c Merge pull request #22596 from y-yagi/remove_extra_space_from_deprecation_msg
remove extra spaces from deprecation message
2015-12-15 09:07:19 -05:00
yuuji.yaginuma
08780eff79 remove extra spaces from deprecation message
```
# before
DEPRECATION WARNING:               Time columns will become time zone aware in Rails 5.1. This
              still causes `String`s to be parsed as if they were in `Time.zone`,
              and `Time`s to be converted to `Time.zone`.

              To keep the old behavior, you must add the following to your initializer:

                  config.active_record.time_zone_aware_types = [:datetime]

              To silence this deprecation warning, add the following:

                  config.active_record.time_zone_aware_types << :time
```

```
# after
DEPRECATION WARNING: Time columns will become time zone aware in Rails 5.1. This
still causes `String`s to be parsed as if they were in `Time.zone`,
and `Time`s to be converted to `Time.zone`.

To keep the old behavior, you must add the following to your initializer:

    config.active_record.time_zone_aware_types = [:datetime]

To silence this deprecation warning, add the following:

    config.active_record.time_zone_aware_types << :time
```
2015-12-15 19:32:20 +09:00
Matthew Draper
97c77160cd Use a real migration version number in docs
Even though this means more things to change when we bump after a
release, it's more important that our examples are directly copyable.
2015-12-15 17:18:10 +10:30
Matthew Draper
6d2469daa6 Schema uses current migration API 2015-12-15 17:18:09 +10:30
Matthew Draper
badaf353ba In 4.2 migrations, timestamps defaulted to null: true
.. it also showed a deprecation warning, but we obviously needn't retain
that.
2015-12-15 17:18:09 +10:30
Matthew Draper
f37d92c410 Find the delegate, even in a deeper inheritance tree 2015-12-15 17:18:09 +10:30
Matthew Draper
a6d4e5e532 Internal test migrations use the private 'Current' version
Apart from specific versioning support, our tests should focus on the
behaviour of whatever version they're accompanying, regardless of when
they were written.

Application code should *not* do this.
2015-12-15 17:18:09 +10:30
Matthew Draper
c0af95e0ab Use a deliberately-invalid migration version in all doc examples
If we use a real version, at best that'll be an onerous update required
for each release; at worst, it will encourage users to write new
migrations against an older version than they're using.

The other option would be to leave these bare, without any version
specifier. But as that's just a variant spelling of "4.2", it would seem
to raise the same concerns as above.
2015-12-15 17:18:09 +10:30
Matthew Draper
6940dc860c Add migration versioning via Migration subclasses 2015-12-15 17:18:08 +10:30
Matthew Draper
de2135209f Ensure uuid-ossp extension is present before we rely on it 2015-12-15 16:48:20 +10:30
Sean Griffin
4ecabed2f6 Revert "Perform a more efficient query in Relation#any?"
This reverts commit 6d5b1fdf55611de2a1071c37544933bb588ae88e.

`eager_load` and `references` can include hashes, which won't match up
with `references`

A test case has been added to demonstrate the problem
2015-12-14 10:05:53 -07:00
Sean Griffin
8d672a5f92 Merge pull request #22395 from avokhmin/becomes-errors-base-2
`ActiveRecord::Base#becomes` should copy the errors
2015-12-14 09:53:16 -07:00
Sean Griffin
6d5b1fdf55 Perform a more efficient query in Relation#any?
This was changed in 421c81b, as `exists?` blows up if you are eager
loading a polymorphic association, as it'll try to construct a join to
that table. The previous change decided to execute a `count` instead,
which wouldn't join.

Of course, the only time we actually need to perform a join on the eager
loaded values (which would perform a left outer join) is if they're
being referenced in the where clause. This doesn't affect inner joins.
2015-12-14 09:51:56 -07:00
Sean Griffin
05bb0689c9 Fix test failures caused by 574f255
There was a test remaining for PG only that was checking for an exact
limit clause
2015-12-14 09:20:07 -07:00
Vokhmin Alexey V
61e5081404 ActiveRecord::Base#becomes should copy the errors 2015-12-14 19:02:20 +03:00
Sean Griffin
574f255629 Use a bind param for LIMIT and OFFSET
We currently generate an unbounded number of prepared statements when
`limit` or `offset` are called with a dynamic argument. This changes
`LIMIT` and `OFFSET` to use bind params, eliminating the problem.

`Type::Value#hash` needed to be implemented, as it turns out we busted
the query cache if the type object used wasn't exactly the same object.

This drops support for passing an `Arel::Nodes::SqlLiteral` to `limit`.
Doing this relied on AR internals, and was never officially supported
usage.

Fixes #22250.
2015-12-14 08:40:02 -07:00
Sean Griffin
4358b0d1f8 Deprecate limit strings with commas
Some backends allow `LIMIT 1,2` as a shorthand for `LIMIT 1 OFFSET 2`.
Supporting this in Active Record massively complicates using bind
parameters for limit and offset, and it's trivially easy to build an
invalid SQL query by also calling `offset` on the same `Relation`.

This is a niche syntax that is only supported by a few adapters, and can
be trivially worked around by calling offset explicitly.
2015-12-14 08:19:47 -07:00
Sean Griffin
ef2744dd94 Merge pull request #22209 from yui-knk/add_test_sanitize_sql_array_handles_named_bind_variables
Add test cases for `#sanitize_sql_array` with named_bind_variables
2015-12-14 07:42:32 -07:00
Santiago Pastorino
0b224ddd55 Merge pull request #22571 from mtsmfm/travel-back
travel back
2015-12-13 22:47:47 -03:00
Aaron Patterson
2de7385cef Merge pull request #22381 from yahonda/use_adapter_subsecond_precision_supported
Use adapter supports_datetime_with_precision
2015-12-13 12:13:22 +09:00
Fumiaki MATSUSHIMA
f4e3eca90c travel back 2015-12-13 11:34:40 +09:00
Arthur Neves
a42770cdd8 Revert "Merge pull request #22502 from maclover7/remove-deprecation-notice"
This reverts commit c2e70ca9b042a3461aac0dc073a80e84bd77eb57, reversing
changes made to b0e5fc2737ed0b2f67f9b9538d01e084545493fd.

this broke the build
2015-12-11 12:54:51 -05:00
Arthur Nogueira Neves
c2e70ca9b0 Merge pull request #22502 from maclover7/remove-deprecation-notice
Remove unused deprecation notice
2015-12-11 11:39:51 -05:00
Rafael França
87b207aa7f Merge pull request #22523 from Elektron1c97/master
Typo correction
2015-12-07 11:15:26 -02:00
Yves Siegrist
bcf89f44e0 Typo correction
In the doc the `dependent` option was set with: `dependent: destroy`.
This is not working because destroy would call the method of the activerecord::base object.

The right way is: `dependent: :destroy`
2015-12-07 14:06:00 +01:00
Rafael França
bf9facb31c Merge pull request #22517 from Elektron1c97/master
[ci skip] Add a dollar sign to each command in the READMEs
2015-12-07 01:07:09 -02:00
Arthur Neves
e7c48db509 Make sure we touch all the parents when touch_later.
The problem was that when saving an object, we would
call touch_later on the parent which wont be saved immediteally, and
it wont call any callbacks. That was working one level up because
we were calling touch, during the touch_later commit phase. However that still
didnt solve the problem when you have a 3+ levels of parents to be touched,
as calling touch would affect the parent, but it would be too late to run callbacks
on its grand-parent.

The solution for this, is instead, call touch_later upwards when the first
touch_later is called. So we make sure all the timestamps are updated without relying
on callbacks.

This also removed the hard dependency BelongsTo builder had with the TouchLater module.
So we can still have the old behaviour if TouchLater module is not included.

[fixes 5f5e6d924973003c105feb711cefdb726f312768]
[related #19324]
2015-12-06 16:53:00 -05:00
Genadi Samokovarov
5a300b2ed6 Introduce after_{create,update,delete}_commit callbacks
Those are actually shortcuts for `after_commit`.

Before:

    after_commit :add_to_index_later, on: :create
    after_commit :update_in_index_later, on: :update
    after_commit :remove_from_index_later, on: :destroy

After:

    after_create_commit  :add_to_index_later
    after_update_commit  :update_in_index_later
    after_destroy_commit :remove_from_index_later
2015-12-06 20:33:36 +02:00
Elektron1c97
6bd417df50 [ci skip] Add a dollar sign to each command in the READMEs
According to pr #22443 in the guides there's always a dollar sign before every command, so why is in the main README a `$` and in every submodule a `%`?

Just eye candy..
2015-12-06 19:18:52 +01:00
Jon Moss
c199b703a8 Remove unused deprecation notice
The `rake db:test:*` tasks were deprecated in #13528, but were
undeprecated and added back in via #17739.
2015-12-05 12:13:05 -05:00
Sean Griffin
c5e5b94c8a Merge pull request #22492 from RochesterinNYC/patch-1
Add note about serialization to update_columns documentation [ci skip]
2015-12-05 06:22:49 -07:00
James Wen
ea5ff2bc98 Clean up and correct documentation for update_columns and update_all [ci skip] 2015-12-05 02:22:19 -05:00
Sean Griffin
b79dedc4b9 Merge pull request #22500 from y-yagi/fix_warning_in_geometric_test
remove warning from postgresql geometric test
2015-12-04 20:37:47 -07:00
yuuji.yaginuma
4ab20ed563 remove warning from postgresql geometric test
This removes the following warning which has been out in the case of a PostgreSQL 9.3 below.

```
activerecord/test/cases/adapters/postgresql/geometric_test.rb:265: warning: instance variable @connection not initialized
```
2015-12-05 12:17:07 +09:00
claudiob
728e28ffd6 Remove old comment about AC::Parameters>subclasses
[ci skip]

Q: What happens if you initialize an AR model by passing Parameters that
have not been whitelisted with `permit`?

A: An `ActiveModel::ForbiddenAttributesError` is raised.

I think this behavior is correct, and it's better than what used to happen,
with unpermitted parameter being simply ignored.
2015-12-02 18:05:01 -08:00
Yves Senn
72b92e8172 don't rely on the columns hash to get defaults. follow-up to #17169.
This will also get the defaults from attribute definitions like:

     attribute :type, :string, default: "SomethingElse"
2015-12-02 17:14:45 +01:00
Yves Senn
4294a7eebf add ActiveRecord::Base.has_attribute?
`has_attribute?` method to check wether a given attribute has been defined.
2015-12-02 16:57:29 +01:00
Yves Senn
0f82f661b7 tests, pluralize singular table name.
This solves the following error:

     ActiveRecord::StatementInvalid: Could not find table 'guitars'

It seems that the table structure of the `Guitar` model has not been
necessary until now. Due to the wrong table name the model was not
correctly linked to the table.
2015-12-02 16:02:01 +01:00
Yves Senn
3da890f891 Merge pull request #17169 from kuldeepaggarwal/fix-STI-default-type
STI cast new instances to `default type` on initialize.
2015-12-02 13:39:30 +01:00
Kuldeep Aggarwal
6b18bdd00c STI cast new instances to default type on initialize.
fixes #17121
2015-12-02 16:11:24 +05:30
Sean Griffin
0d70078f11 Ensure Relation responds to shuffle
It appears that I missed this one when I delegated all the non-mutation
array methods that were not on Enumerable
2015-12-01 16:41:50 -07:00
Yves Senn
208911e4c0 Merge pull request #22449 from dnagir/database_connection_message
Explain the connection pool error message better [ci skip]
2015-12-01 08:35:12 +01:00
Dmytrii Nagirniak
b83c097a3c Explain the connection pool error message better
The previous message was misleading (especially for Ops guys) when
diagnosing problems related to the database connection.

The message was suggesting that the connection cannot be obtained which
normally assumes the need to look at the database.

But this isn't the case as the connection could not be retrieved from
the application's internal connection pool.

The new message should make it more explicit and remove the confusion.
2015-12-01 08:06:54 +11:00
Yasuo Honda
87ee4f4149 Consolidate tests for time and datetime columns options, limit and precision 2015-11-30 20:37:45 +00:00
Yasuo Honda
4687e59d5c Support supports_datetime_with_precision? for sqlite3 2015-11-30 20:04:46 +00:00
Yasuo Honda
0dc8166536 Use adapter supports_datetime_with_precision to support 3rd party adapter tests 2015-11-30 20:04:46 +00:00
Yves Senn
f746534ca4 Merge pull request #22345 from GUI/fix-multi-schema-structure-dump
Fix rake db:structure:dump on Postgres when multiple schemas are used

Conflicts:
	activerecord/CHANGELOG.md

Closes #22346.
2015-11-30 16:06:57 +01:00
Kasper Timm Hansen
8299a35d25 Merge pull request #22451 from kamipo/refactor_abstract_adapter_initialize
Refactor `AbstractAdapter#initialize`
2015-11-30 13:13:45 +01:00
Ryuta Kamizono
d5007f183a Fix indentation in CHANGELOG.md [ci skip] 2015-11-30 20:44:56 +09:00