| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Because `table` is part of `reflection`, don't need to pass it
explicitly. And also, naming `alias_name` to `table` is a little
confusing. `aliased_table` is preferable than `alias_name`.
|
|
|
|
|
|
| |
`PolymorphicReflection` is an internal class that is used in
`ThroughReflection`. But `RuntimeReflection` is used for the head of
chain in `AssociationScope`. These are totally different things.
|
|
|
|
|
|
|
|
|
| |
The order of scope evaluation should be from through scope to the
association's own scope. Otherwise the association's scope cannot affect
to through scope.
Fixes #13677.
Closes #28449.
|
|
|
|
| |
Because `refl.scope` is the same meaning with `chain_head.scope`.
|
|
|
|
|
|
| |
not empty
Because `reflection_scope.values` will create extra new hash.
|
|
|
|
|
| |
If `reflection.scope` isn't given, `reflection_scope` is always
`klass.unscoped`. it is unnecessary to merge it.
|
|
|
|
|
|
|
| |
Otherwise using reserved words as composite primary key names will be
failed as an invalid SQL.
Fixes #30518.
|
|
|
|
|
|
|
|
| |
Defined scope treats nil as `all`, but scope in associations isn't so.
If the result of the scope is nil, most features on associations will be
broken. It should treat nil as `all` like defined scope.
Fixes #20823.
|
|
|
|
| |
Because this is not a test case.
|
|
|
|
|
|
|
|
|
|
| |
If `reflection_scope.where_clause` is not empty, `through_scope` should
be joined the source association. But if `values[:references]` in
`reflection_scope` is empty, the source association will not be joined.
It should use `source_reflection.table_name` in that case.
Fixes #22535.
Closes #28763.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If `reflection_scope.where_clause` is not empty, `through_scope` should
be joined the source association. But if the through association doesn't
have explicit `:source`, `options[:source]` will be nil and
`scope.includes_values` will also be empty. It should use
`source_reflection.name` rather than `options[:source]`.
Fixed by a26cff3c1235c61cd0135bed4ef63d7be452b458.
Fixes #11078.
Fixes #26129.
Closes #14312.
Closes #29155.
Closes #29841.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this fix, preloading `:comments_with_include` will cause the
following error:
```
% bundle exec ruby -w -Itest test/cases/associations/eager_test.rb -n test_eager_with_has_many_through_join_model_with_include
Using sqlite3
Run options: -n test_eager_with_has_many_through_join_model_with_include --seed 1502
E
Error:
EagerAssociationTest#test_eager_with_has_many_through_join_model_with_include:
ActiveRecord::AssociationNotFoundError: Association named 'post' was not found on Post; perhaps you misspelled it?
```
|
|
|
|
|
| |
If `reflection_scope.where_clause` is empty, `scope` isn't changed. So
`scope.eager_loading?` is always false.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`to_i` was added for SQLite3 adapter which did not handle number
but sqlite3 gem already supports it then `to_i` is unnecessary.
else condition is kept for adapters which return string,
i.e. mysql(not mysql2) and sqlserver.
Renamed `test_cache_does_not_wrap_string_results_in_arrays`
to `test_cache_does_not_wrap_results_in_arrays` to explain the
current behavior. most of adapters return integer, not only string.
* Refer these commits:
"future proofing the sqlite3 adapter code"
https://github.com/rails/rails/commit/beda2d43d6ac5c3435fc2fba0cbd108c20fe1c67
"Refactor calculation test to remove unneeded SQLite special case."
https://github.com/rails/rails/commit/47d568ed3fc701934ebe80b276f3d8bf6951c93f
"no need to to_i, sqlite does that for us"
https://github.com/rails/rails/commit/6cf44a1bd64ba10497742d70ad78fe68faa16e99
|
|\
| |
| | |
CI with the latest stable(GA) version of MariaDB 10.2
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
when tested with MariaDB 10.2.8 or higher
Refer #30485
https://mariadb.com/kb/en/the-mariadb-library/alter-table/#drop-column-if-exists-col_name-cascaderestrict
> MariaDB starting with 10.2.8
> Dropping a column that is part of a multi-column UNIQUE constraint is not permitted.
|
|/
|
|
|
|
| |
type columns
Fixes #30496.
|
| |
|
|
|
|
|
|
|
|
|
| |
Don't use remove_method or remove_possible_method just before a new
definition: at best the purpose is unclear, and at worst it creates a
race condition.
Instead, prefer redefine_method when practical, and
silence_redefinition_of_method otherwise.
|
|\
| |
| | |
Delegate :rindex, :slice, :rotate(missing) to 'records'
|
| | |
|
|\ \
| | |
| | | |
Unify the internal source control .keep file name
|
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Without this, `db:structure:dump` task raises an error as follwing:
```
can't modify frozen String
activerecord/lib/active_record/tasks/sqlite_database_tasks.rb:77:in `run_cmd_error'
activerecord/lib/active_record/tasks/sqlite_database_tasks.rb:72:in `run_cmd'
activerecord/lib/active_record/tasks/sqlite_database_tasks.rb:52:in `structure_dump'
activerecord/lib/active_record/tasks/database_tasks.rb:219:in `structure_dump'
activerecord/lib/active_record/railties/databases.rake:279:in `block (3 levels) in <main>'
railties/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
railties/lib/rails/commands/rake/rake_command.rb:20:in `perform'
railties/lib/rails/command.rb:48:in `invoke'
railties/lib/rails/commands.rb:18:in `<main>'
```
|
|\ \
| | |
| | | |
Added CHANGELOG for #30360 [ci skip]
|
| | | |
|
|\ \ \
| | | |
| | | | |
Clarify that bulk option is supported only by MySQL
|
| |/ /
| | |
| | |
| | | |
- Closes #30441
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If `:readers` fixture is loaded before the test, it will be failed.
Use `firm.developer_ids` instead because we don't have `:contracts`
fixture for now.
https://travis-ci.org/rails/rails/jobs/268976230#L729
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
always true
Because `add_as_polymorphic_through` is only called when
`options[:source_type]` is true.
|
| | |
| | |
| | |
| | | |
`RuntimeReflection#alias_candidate` is no longer used since 0408e212.
|
| | |
| | |
| | | |
Context: https://github.com/rails/rails/pull/29619#discussion_r125158589
|
| | | |
|
|/ /
| |
| |
| |
| |
| | |
I was added a table options after `force: :cascade` in #17569 for not
touching existing tests (reducing diff). But `force: :cascade` is not an
important information. So I prefer to place a table options before
`force: :cascade`.
|
| | |
|
| |
| |
| |
| | |
https://travis-ci.org/rails/rails/jobs/268599781#L784
|
|\ \
| | |
| | | |
Fix broken doc for Active Record [ci skip]
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| | |
This regression was caused by caa178c1. The block for
`set_inverse_instance` should also be passed to join dependency.
Fixes #30402.
|
| |
| |
| |
| |
| |
| |
| | |
when other `AutomaticInverseFindingTests` load `:comments` fixture
but does not load `:posts`.
Refer #30385 for similar issue
|
| | |
|
|\ \
| | |
| | | |
Refactor `SchemaDumper` to make it possible to adapter specific customization
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently `SchemaDumper` is only customizable for column options. But
3rd party connection adapters (oracle-enhanced etc) need to customizable
for table or index dumping also. To make it possible, I introduced
adapter specific `SchemaDumper` classes for that.
|
| | | |
|
| |/
|/| |
|
|\ \
| | |
| | | |
`counter_cache` requires association class before `attr_readonly`
|
| |/
| |
| |
| |
| | |
There were similar pull requests #26370 #27575 fixed by different way
by moving `require "models/post"` before `require "models/comment"`
|
|\ \
| | |
| | | |
Load :author_addresses fixture to keep data integrity with :authors
|