method
associated_records_by_owner
v4.2.1 -
Show latest stable
- Class:
ActiveRecord::Associations::Preloader::Association
associated_records_by_owner(preloader)private
No documentation available.
# File activerecord/lib/active_record/associations/preloader/association.rb, line 77
def associated_records_by_owner(preloader)
owners_map = owners_by_key
owner_keys = owners_map.keys.compact
# Each record may have multiple owners, and vice-versa
records_by_owner = owners.each_with_object({}) do |owner,h|
h[owner] = []
end
if owner_keys.any?
# Some databases impose a limit on the number of ids in a list (in Oracle it's 1000)
# Make several smaller queries if necessary or make one query if the adapter supports it
sliced = owner_keys.each_slice(klass.connection.in_clause_length || owner_keys.size)
records = load_slices sliced
records.each do |record, owner_key|
owners_map[owner_key].each do |owner|
records_by_owner[owner] << record
end
end
end
records_by_owner
end