| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ \ \ |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing
changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Enforce frozen string in Rubocop
|
| | | | | | |
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | | |
Make ActiveSupport frozen-string-literal friendly.
|
| | | | | | | |
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Should be clear `@association_ids` when joined newly associated record
|
| | | |/ / / /
| | |/| | | |
| | | | | | |
| | | | | | | |
Fixes #29627.
|
|/ / / / / / |
|
|/ / / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Remove unused `aliased_table_name` in `Association`
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
`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.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
Prevent extra `through_scope`
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
We can reuse `through_scope` for `reset_association`.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
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`.
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | |
| | | | | | |
| | | | | | | |
kamipo/fix_ids_reader_to_respect_case_sensitive_pk
Fix `ids_reader` to respect case sensitive primary key
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
```ruby
car = Car.create!(name: "Tofaş")
# Before
car.bulb_ids # => SELECT "bulbs".ID FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]]
# After
car.bulb_ids # => SELECT "bulbs"."ID" FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]]
```
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
ActiveRecord: do not create "has many through" records that have been removed
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
If a record was built on a HasManyThroughAssociation, then removed, and
then the record was saved, the removed record would be created anyways.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Refactor join dependency to move building constraints to `join_scope` in `Reflection`
|
| | | | | | | | |
|
| |/ / / / / / |
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Simply we can skip instantiating `NullPreloader` if `assoc.klass` is
nil.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Extract `build_scope` and `predicate_builder` in `Reflection`
|
| | | | | | | |
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Ensure that using correct alias tracker
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | | |
association, not the join root
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
Rails 5.1.2.rc1 regression - Clear offset cache on CollectionProxy reset/reload
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
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.
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Doing `Author.joins(:posts).merge(Post.joins(:comments))` does this
`SELECT ... INNER JOIN posts ON... LEFT OUTER JOIN comments ON...`
instead of doing
`SELECT ... INNER JOIN posts ON... INNER JOIN comments ON...`.
This behavior is unexpected and makes little sense as, basically, doing
`Post.joins(:comments)` means I want posts that have comments. Turning
it to a LEFT JOIN means I want posts and join the comments data, if
any.
We can see this problem directly in the existing tests.
The test_relation_merging_with_merged_joins_as_symbols only does joins
from posts to comments to ratings while the ratings fixture isn't
loaded, but the count is non-zero.
|
| |/ / / /
|/| | | |
| | | | |
| | | | | |
Because constructing `scope` is a little expensive.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
A collection association will raise on `#create_association` when the parent is
unpersisted. A singular association should do the same. This addresses
issue #29219.
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Fix association with extension issues
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As @matthewd's suggestion, if `klass` has no default scope, it will more
faster.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Some third party modules expects that association returns same proxy
object each time (e.g. for stubbing collection methods:
https://github.com/rspec/rspec-rails/issues/1817).
So I decided that cache the proxy object and reset scope in the proxy
object each time.
Related context: https://github.com/rails/rails/commit/c86a32d7451c5d901620ac58630460915292f88b#commitcomment-2784312
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
|/ / / / /
| | | | |
| | | | |
| | | | | |
Using `Association#interpolate` was removed since #11251.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Remove unused `JoinPart#name`
|
| |/ / / / |
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
The only difference between `make_inner_joins` and
`make_left_outer_joins` is the `join_type`.
|
| | | |
| | | |
| | | |
| | | | |
Since through association is always loaded by `preloader.preload`.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`ClassSpecificRelation` has `method_missing` and the `method_missing` is
called first. if an associated class has the missing method in a
relation, never reach to the `method_missing` in the `CollectionProxy`.
I extracted `DelegateExtending` and included it to the delegate class
that including `ClassSpecificRelation` to fix the issue.
Fixes https://github.com/rails/rails/pull/28246#issuecomment-296033784.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
association saved in the callback
Related #18155, #26661, 268a5bb, #27434, #27442, and #28599.
Originally #18155 was introduced for preventing double insertion caused
by the after save callback. But it was caused the before save issue
(#26661). 268a5bb fixed #26661, but it was caused the performance
regression (#27434). #27442 added new record to `target` before calling
callbacks for fixing #27434. But it was caused double firing before save
callback (#28599). We cannot add new object to `target` before saving
the object.
This is improving #18155 to only track callbacks after `save`.
Fixes #28599.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Since #28473 `uniq` is delegated to `records`, so `CollectionProxy#uniq`
is unnecessary.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Extension methods should not delegate to `scope` to respect dirty
target on `CollectionProxy`.
Fixes #28419.
|