| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
|
|\ \ \
| | | |
| | | |
| | | | |
Fix for has_and_belongs_to_many & has_many_through associations
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
partial_writes is false
This will fix #19663
Also with this fix, active record does not fire unnecassary update queries while partial_writes is true
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Using Constant and symbol class_name option for associations are valid but raises exception on HABTM associations.
There was a test case which tries to cover symbol class_name usage but doesn't cover correctly. Fixed both symbol usage and constant usage as well.
These are all working as expected now;
```
has_and_belongs_to_many :foos, class_name: 'Foo'
has_and_belongs_to_many :foos, class_name: :Foo
has_and_belongs_to_many :foos, class_name: Foo
```
Closes #23767
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- CollectionAssociation#select was removed in
https://github.com/rails/rails/pull/25989 in favor of
QueryMethods#select but it caused a regression when passing arguments
to select and a block.
- This used to work earlier in Rails 4.2 and Rails 5. See gist
https://gist.github.com/prathamesh-sonpatki/a7df922273473a77dfbc742a4be4b618.
- This commit restores the behavior of Rails 4.2 and Rails 5.0.0 to
allow passing arguments and block at the same time but also deprecates
it.
- Because, these arguments do not have any effect on the output of
select when select is used with a block.
- Updated documentation to remove the example passing arguments and
block at the same time to `CollectionProxy#select`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This was caused by 6d0d83a33f59d9415685852cf77818c41e2e2700. While the
bug it's trying to fix is handled if the association is loaded in an
after_(create|save) callback, it doesn't handle any cases that load the
association before the persistence takes place (validation, or before_*
filters). Instead of caring about the timing of persistence, we can just
ensure that we're not double adding the record instead.
The test from that commit actually broke, but it was not because the bug
has been re-introduced. It was because `Bulb` in our test suite is doing
funky things that look like STI but isn't STI, so equality comparison
didn't happen as the loaded model was of a different class.
Fixes #26661.
|
|\ \
| | |
| | | |
Remove unnecessry `alias uniq distinct` for collection association
|
| | |
| | |
| | |
| | | |
`CollectionAssociation` is internal class and `uniq` is not called.
|
|/ /
| |
| |
| |
| |
| | |
All indentation was normalized by rubocop auto-correct at 80e66cc4d90bf8c15d1a5f6e3152e90147f00772.
But comments was still kept absolute position. This commit aligns
comments with method definitions for consistency.
|
|\ \
| | |
| | | |
Pass `set_inverse_instance` block to `sc.execute` for `SingularAssociation`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Follow up to caa178c.
caa178c updated all code which sets inverse instances on newly loaded
associations to use block. But `SingularAssociation` was forgotten it.
|
| | | |
|
|\ \ \
| | | |
| | | | |
[ci skip] Remove duplicate example.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Already checked `if !find_target? || loaded?`, unnecessary `!loaded?` in
elsif condition.
|
|\ \ \ \
| |/ / /
|/| | | |
Remove unnecessary `query_scope`
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Simply use its own method because `CollectionProxy` inherits `Relation`.
|
| |/ /
|/| | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If a parent association was accessed in an `after_find` or
`after_initialize` callback, it would always end up loading the
association, and then immediately overwriting the association we just
loaded. If this occurred in a way that the parent's `current_scope` was
set to eager load the child, this would result in an infinite loop and
eventually overflow the stack.
For records that are created with `.new`, we have a mechanism to
perform an action before the callbacks are run. I've introduced the same
code path for records created with `instantiate`, and updated all code
which sets inverse instances on newly loaded associations to use this
block instead.
Fixes #26320.
|
| | |
| | |
| | |
| | | |
Simply use its own methods because `CollectionProxy` inherits `Relation`.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
`length` is delegated to `records` (`load_target`) by
`ActiveRecord::Delegation`.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/relation/delegation.rb#L38
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/remove_unnecessary_select_for_collection_proxy
Remove unnecessary `select` method for `CollectionProxy`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Currently `CollectionProxy` inherits `Relation` and `Relation` includes
`QueryMethods`. This method is completely duplicated.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/relation/query_methods.rb#L271-L275
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Preserve readonly flag only for readonly association
|
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes #24093
|
| |/ / /
|/| | |
| | | |
| | | |
| | | | |
Currently `CollectionProxy` inherits `Relation` therefore we can use
its own methods rather than delegating to collection association.
|
|\ \ \ \
| | | | |
| | | | | |
`pluck` should use `records` (`load_target`) when `loaded?` is true
|
| | | | | |
|
| |_|/ /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`#second`, `#third`, etc finder methods was added in 03855e790de2224519f55382e3c32118be31eeff.
But the signature of these methods is inconsistent with the original
finder methods. And also the signature of `#first` and `#last` methods
is different from the original. This commit fixes the inconsistency.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
`#first`, `#second`, ..., `#last` methods respects dirty target. But
`#take` doesn't respect it. This commit fixes the inconsistent behavior.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A few have been left for aesthetic reasons, but have made a pass
and removed most of them.
Note that if the method `foo` returns an array, `foo << 1`
is a regular push, nothing to do with assignments, so
no self required.
|
| | | |
| | | |
| | | |
| | | | |
Some case expressions remain, need to think about those ones.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
|/ / /
| | |
| | |
| | |
| | | |
The current code base is not uniform. After some discussion,
we have chosen to go with double quotes by default.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Because `scope` (`target_scope`) is a `AssociationRelation`.
`AssociationRelation` handles `set_inverse_instance`.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33
See also #26022.
|
|/ /
| |
| |
| |
| |
| |
| | |
Because `scope` (`target_scope`) is a `AssociationRelation`.
`AssociationRelation` handles `set_inverse_instance`.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33
|
|\ \
| | |
| | | |
`FinderMethods` uses `records` (`load_target`) when `loaded?` is true
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix to `CollectionProxy#load` does `load_target`
|
| |/ / |
|
| | |
| | |
| | |
| | | |
Fixes #25653.
|
|/ /
| |
| |
| | |
`send` is unnecessary.
|
| |
| |
| |
| |
| |
| | |
association scope
Fixes #25732.
|
|\ \
| | |
| | |
| | |
| | | |
kamipo/move_warning_about_composite_primary_key_to_attribute_methods_primary_key
Move the warning about composite primary key to `AttributeMethods::PrimaryKey`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Actually schema dumper/creation supports composite primary key (#21614).
Therefore it should not show the warning about composite primary key in
connection adapter.
This change moves the warning to `AttributeMethods::PrimaryKey` and
suppress the warning for habtm join table.
Fixes #25388.
|