From b6ddaa4266c7d77fca9a61037c4455cfbf9d77a9 Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Sun, 11 Sep 2016 05:46:12 +0900 Subject: Remove unnecessary `target.uniq.size` in `CollectionAssociation#size` If `association_scope` have `distinct_value`, same record cannot exist in `target`. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/associations/collection_association.rb#L419-L424 ```ruby def add_to_target(record, skip_callbacks = false, &block) if association_scope.distinct_value index = @target.index(record) end replace_on_target(record, index, skip_callbacks, &block) end ``` --- .../lib/active_record/associations/collection_association.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'activerecord/lib/active_record/associations') diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb index 278c95e27b..a253c3a67a 100644 --- a/activerecord/lib/active_record/associations/collection_association.rb +++ b/activerecord/lib/active_record/associations/collection_association.rb @@ -222,11 +222,7 @@ module ActiveRecord # +count_records+, which is a method descendants have to provide. def size if !find_target? || loaded? - if association_scope.distinct_value - target.uniq.size - else - target.size - end + target.size elsif !association_scope.group_values.empty? load_target.size elsif !association_scope.distinct_value && target.is_a?(Array) -- cgit v1.2.3