diff options
Diffstat (limited to 'activerecord/lib/active_record/associations/preloader/singular_association.rb')
-rw-r--r-- | activerecord/lib/active_record/associations/preloader/singular_association.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/preloader/singular_association.rb b/activerecord/lib/active_record/associations/preloader/singular_association.rb new file mode 100644 index 0000000000..f60647a81e --- /dev/null +++ b/activerecord/lib/active_record/associations/preloader/singular_association.rb @@ -0,0 +1,21 @@ +module ActiveRecord + module Associations + 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 + association.set_inverse_instance(record) if record + end + end + + end + end + end +end |