HasManyAssociation: moved half of counter cache code to reflection #21486
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.
There are two methods that return the counter cache column name now in code: one for
belongs_toassociation and one for all others. That's a little confusing. So, now they are merged.Current implementation has a lot of utility methods that accept
reflection call a lot of methods on it and exit.
E.g.
has_counter_cache?(reflection)It Breaks OOP principle XXX from the guide book and causes confusion and inability of caching even
through it always returns the same result for the same reflection object.
It can be done easier without access to the association context
by moving code into reflection itself.
e.g.
reflection.has_counter_cache?Reflection is less complex object than association so moving code there
automatically makes it simpler to understand.