diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-13 22:32:40 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-13 22:45:35 +0900 |
commit | 47e3bbeb9057b37c244330cc4e745c8a8090e8c5 (patch) | |
tree | 6b92c111ee30d23a014aee9631812b4744b9d853 /activerecord/lib/active_record/associations/has_many_association.rb | |
parent | 7724a6e98b904cb9d7ca0b135105c718e3b572d1 (diff) | |
download | rails-47e3bbeb9057b37c244330cc4e745c8a8090e8c5.tar.gz rails-47e3bbeb9057b37c244330cc4e745c8a8090e8c5.tar.bz2 rails-47e3bbeb9057b37c244330cc4e745c8a8090e8c5.zip |
Revert "Merge pull request #35127 from bogdan/counter-cache-loading"
This reverts commit eec3e28a1abf75676dcee58308ee5721bb53c325, reversing
changes made to 5588fb4802328a2183f4a55c36d6703ee435f85c.
Reason: Marking as loaded without actual loading is too greedy optimization.
See more context #35239.
Closes #35239.
[Edouard CHIN & Ryuta Kamizono]
Diffstat (limited to 'activerecord/lib/active_record/associations/has_many_association.rb')
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_association.rb | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index 6f67934a79..5972846940 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -52,7 +52,11 @@ module ActiveRecord # If the collection is empty the target is set to an empty array and # the loaded flag is set to true as well. def count_records - count = counter_cache_value || scope.count(:all) + count = if reflection.has_cached_counter? + owner._read_attribute(reflection.counter_cache_column).to_i + else + scope.count(:all) + end # If there's nothing in the database and @target has no new records # we are certain the current target is an empty array. This is a @@ -62,14 +66,6 @@ module ActiveRecord [association_scope.limit_value, count].compact.min end - def counter_cache_value - reflection.has_cached_counter? ? owner._read_attribute(reflection.counter_cache_column).to_i : nil - end - - def find_target? - super && !counter_cache_value&.zero? - end - def update_counter(difference, reflection = reflection()) if reflection.has_cached_counter? owner.increment!(reflection.counter_cache_column, difference) |