Bugfix association loading behavior when counter cache is zero #35127
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Suppose we have a
has_many
association with a counter cache.In this case, when counter cache is zero, it is often used to avoid certain SQL queries.
Example:
However, this behavior doesn't happen consistently. If we change the method call order the number of SQL queries is different:
It happens because
#size
makes use of the counter cache and assumes the association is loaded when it is zero. I think that this behavior should be consistent with direct association loading.A lot of additional tests were added to ensure no regression occur.
cc @kamipo