diff options
| author | Ryuta Kamizono <kamipo@gmail.com> | 2017-09-18 11:03:59 +0900 | 
|---|---|---|
| committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-09-18 11:03:59 +0900 | 
| commit | 9b1115ea34e44fe772272ec58ccba7a9cbc0955a (patch) | |
| tree | f4d8461d7f1c0338060eb077c86920c5c6f54b93 | |
| parent | f06266761cbecf0fa553fb2a35f62daf8e05c898 (diff) | |
| download | rails-9b1115ea34e44fe772272ec58ccba7a9cbc0955a.tar.gz rails-9b1115ea34e44fe772272ec58ccba7a9cbc0955a.tar.bz2 rails-9b1115ea34e44fe772272ec58ccba7a9cbc0955a.zip | |
Extract `associate_records_to_owner` to refactor `Preloader::Association`
Since we have `Preloader#preload`, `Preloader::Association#preload` is a
little confusing. And also, since the `preload` method is an abstract
method, it is hard to read where `associated_records_by_owner` is
called. This refactors `Preloader::Association` to ease to read where
`associated_records_by_owner` is called.
3 files changed, 14 insertions, 20 deletions
| diff --git a/activerecord/lib/active_record/associations/preloader/association.rb b/activerecord/lib/active_record/associations/preloader/association.rb index 9bb6a613e1..323f25e37e 100644 --- a/activerecord/lib/active_record/associations/preloader/association.rb +++ b/activerecord/lib/active_record/associations/preloader/association.rb @@ -17,11 +17,9 @@ module ActiveRecord          end          def run(preloader) -          preload(preloader) -        end - -        def preload(preloader) -          raise NotImplementedError +          associated_records_by_owner(preloader).each do |owner, records| +            associate_records_to_owner(owner, records) +          end          end          # The name of the key on the associated records @@ -51,6 +49,10 @@ module ActiveRecord              end            end +          def associate_records_to_owner(owner, records) +            raise NotImplementedError +          end +            def owner_keys              unless defined?(@owner_keys)                @owner_keys = owners.map do |owner| diff --git a/activerecord/lib/active_record/associations/preloader/collection_association.rb b/activerecord/lib/active_record/associations/preloader/collection_association.rb index fb920a642c..fc2029f54a 100644 --- a/activerecord/lib/active_record/associations/preloader/collection_association.rb +++ b/activerecord/lib/active_record/associations/preloader/collection_association.rb @@ -5,13 +5,10 @@ module ActiveRecord      class Preloader        class CollectionAssociation < Association #:nodoc:          private - -          def preload(preloader) -            associated_records_by_owner(preloader).each do |owner, records| -              association = owner.association(reflection.name) -              association.loaded! -              association.target.concat(records) -            end +          def associate_records_to_owner(owner, records) +            association = owner.association(reflection.name) +            association.loaded! +            association.target.concat(records)            end        end      end diff --git a/activerecord/lib/active_record/associations/preloader/singular_association.rb b/activerecord/lib/active_record/associations/preloader/singular_association.rb index 266b5f6b1c..30a92411e3 100644 --- a/activerecord/lib/active_record/associations/preloader/singular_association.rb +++ b/activerecord/lib/active_record/associations/preloader/singular_association.rb @@ -5,14 +5,9 @@ module ActiveRecord      class Preloader        class SingularAssociation < Association #:nodoc:          private - -          def preload(preloader) -            associated_records_by_owner(preloader).each do |owner, associated_records| -              record = associated_records.first - -              association = owner.association(reflection.name) -              association.target = record -            end +          def associate_records_to_owner(owner, records) +            association = owner.association(reflection.name) +            association.target = records.first            end        end      end | 
