class ActiveRecord::Associations::Preloader::CountLoader

Public Instance Methods

association_key_name() click to toggle source
# File lib/active_record/associations/preloader/count_loader.rb, line 5
def association_key_name
  reflection.foreign_key
end
owner_key_name() click to toggle source
# File lib/active_record/associations/preloader/count_loader.rb, line 9
def owner_key_name
  reflection.active_record_primary_key
end

Private Instance Methods

load_slices(slices) click to toggle source
# File lib/active_record/associations/preloader/count_loader.rb, line 24
def load_slices(slices)
  @preloaded_records = slices.flat_map { |slice|
    records_for(slice)
  }

  @preloaded_records.map { |record|
    key = record
    [record, key]
  }
end
preload(preloader) click to toggle source
# File lib/active_record/associations/preloader/count_loader.rb, line 15
def preload(preloader)
  associated_records_by_owner(preloader).each do |owner, associated_records|
    count = associated_records.count

    association = owner.association(reflection.name)
    association.target = count
  end
end
query_scope(ids) click to toggle source
# File lib/active_record/associations/preloader/count_loader.rb, line 35
def query_scope(ids)
  scope.where(association_key.in(ids)).pluck(association_key_name)
end