| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
```
% ARCONN=sqlite3 be ruby -w -Itest test/cases/associations/belongs_to_associations_test.rb -n test_multiple_counter_cache_with_after_create_update
test/cases/associations/belongs_to_associations_test.rb:1181: warning: assigned but unused variable - comment
Using sqlite3
Run options: -n test_multiple_counter_cache_with_after_create_update --seed 49644
.
Finished in 0.114266s, 8.7515 runs/s, 17.5030 assertions/s.
1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
```
|
|\
| |
| | |
Fix `counter_cache` double increment
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an `after_create` callback did `update_attributes` on a record with
multiple `belongs_to` associations with counter caches, even numbered
associations would have their counters double-incremented. Fixes to
`ActiveModel::Dirty` in 020abad fixed this.
This adds regression tests for this bug fixed incidentally in the other
commit, which also removed the need for the workaround using
@_after_create_counter_called.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A common source of bugs and code bloat within Active Record has been the
need for us to maintain the list of bind values separately from the AST
they're associated with. This makes any sort of AST manipulation
incredibly difficult, as any time we want to potentially insert or
remove an AST node, we need to traverse the entire tree to find where
the associated bind parameters are.
With this change, the bind parameters now live on the AST directly.
Active Record does not need to know or care about them until the final
AST traversal for SQL construction. Rather than returning just the SQL,
the Arel collector will now return both the SQL and the bind parameters.
At this point the connection adapter will have all the values that it
had before.
A bit of this code is janky and something I'd like to refactor later. In
particular, I don't like how we're handling associations in the
predicate builder, the special casing of `StatementCache::Substitute` in
`QueryAttribute`, or generally how we're handling bind value replacement
in the statement cache when prepared statements are disabled.
This also mostly reverts #26378, as it moved all the code into a
location that I wanted to delete.
/cc @metaskills @yahonda, this change will affect the adapters
Fixes #29766.
Fixes #29804.
Fixes #26541.
Close #28539.
Close #24769.
Close #26468.
Close #26202.
There are probably other issues/PRs that can be closed because of this
commit, but that's all I could find on the first few pages.
|
|\ \
| | |
| | | |
Match destroyed_by_association for has_one to has_many
|
| |/
| |
| |
| |
| |
| |
| | |
When a has_many association is destroyed by `dependent: destroy`,
destroyed_by_association is set to the reflection, and this can be
checked in callbacks. This matches that behaviour for has_one
associations.
|
| |
| |
| |
| |
| | |
This fixes the following failures.
https://travis-ci.org/rails/rails/jobs/253990014
|
|/ |
|
|\
| |
| | |
Add a test case for overwriting existing condition on associations
|
| |
| |
| |
| |
| |
| |
| |
| | |
Overwriting existing condition on associations has already supported
(23bcc65 for eager loading, 2bfa2c0 for preloading).
Fixes #27724.
Closes #29154.
|
|/
|
|
|
| |
Since 07e5301, `Relation#first` will order by primary key if no order is
defined.
|
|
|
|
| |
Fixes #28324.
|
| |
|
|
|
|
| |
It is covered by following assertion.
|
|
|
|
|
| |
This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing
changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
|
|\
| |
| |
| | |
Enforce frozen string in Rubocop
|
| | |
|
|\ \
| | |
| | | |
Should be clear `@association_ids` when joined newly associated record
|
| |/
| |
| |
| | |
Fixes #29627.
|
|\ \
| |/
|/| |
Fix automatic inverse for polymorphic interfaces
|
| |
| |
| |
| | |
relationships when building objects on new records
|
| |
| |
| |
| |
| |
| |
| | |
This makes automatic inverse detection possible for polymorphic
:has_one & :has_many possible.
This resolves a number of issues, eg. `touch: true` on polymorphic relationships (#16446) and automatically setting inverse associations on newly built objects (#15028, #21843).
|
| |
| |
| |
| |
| |
| |
| | |
`aliased_table_name` in `Association` was added at a3502c4.
`aliased_table_name` in `JoinDependency` (added at 55854c4) is used, but
it looks like that added one in `Association` is never used from the
beginning.
|
|\ \
| | |
| | |
| | |
| | |
| | | |
kamipo/fix_eager_loading_to_respect_store_full_sti_class
Fix eager loading to respect `store_full_sti_class` setting
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/dont_passing_klass_connection_to_association_scope
Don't passing `klass.connection` to `AssociationScope`
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Passing `klass.connection` is redundant because `AssociationScope` is
passed an association itself and an association has `klass`.
|
|\ \ \ \
| |_|/ /
|/| | | |
Add a test case for unscoping `default_scope` in associations
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Unscoping `default_scope` in associations has already supported (#17360
for preloading, c9cf8b8 for eager loading).
Fixes #20679.
Closes #16531.
|
|\ \ \
| |/ /
|/| | |
Use `reload` in `test_find_first_after_reload`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
And use `assert_same` instead of `assert_equal` and tiny fix assert
message s/#reload/#reset/.
Follow up of #29511.
|
|/ /
| |
| |
| |
| | |
If a record was built on a HasManyThroughAssociation, then removed, and
then the record was saved, the removed record would be created anyways.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The `@offsets` cache is used by FinderMethods to cache records found by
find_nth. This cache is cleared in AR::Relation#reset, but not in
CollectionProxy#reset or CollectionProxy#reload.
Because of this, since #29098, calling #first/#find_nth/etc after
calling #reload or #reset on an association could return a stale record.
This is an issue both when the full association target is loaded and
when the item is loaded in #find_nth.
This commit solves the problem by clearing the `@offsets` cache in
CollectionProxy#reset and CollectionProxy#reload.
|
| |
| |
| |
| |
| |
| | |
A collection association will raise on `#create_association` when the parent is
unpersisted. A singular association should do the same. This addresses
issue #29219.
|
| |
| |
| |
| | |
These `assert_nothing_raised` are covered by following assertions.
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | | |
Fix association with extension issues
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes the following issues.
* `association_scope` doesn't include `default_scope`. Should use `scope` instead.
* We can't use `method_missing` for customizing existing method.
* We can't use `relation_delegate_class` for sharing extensions. Should extend per association.
|
|/ / |
|
|\ \
| | |
| | | |
Define path with __dir__
|
| | |
| | |
| | |
| | |
| | |
| | | |
".. with __dir__ we can restore order in the Universe." - by @fxn
Related to 5b8738c2df003a96f0e490c43559747618d10f5f
|
| | | |
|
|\ \ \
| | | |
| | | | |
Make helper methods in tests to private
|
| |/ /
| | |
| | |
| | |
| | | |
`make_model` and `make_no_pk_hm_t` in `HasManyThroughAssociationsTest`
are not a test case. it should be private.
|
|/ / |
|
| |
| |
| |
| | |
Fixes #29025.
|
| | |
|
| |
| |
| |
| |
| | |
This change reverted in eac6f369 but it is needed for data integrity.
See #25328.
|