class ActiveRecord::Associations::Preloader::Association::LoaderQuery
:nodoc:
def eql?(other)
def eql?(other) association_key_name == other.association_key_name && scope.table_name == other.scope.table_name && scope.connection_specification_name == other.scope.connection_specification_name && scope.values_for_queries == other.scope.values_for_queries end
def hash
def hash [association_key_name, scope.table_name, scope.connection_specification_name, scope.values_for_queries].hash end
def initialize(scope, association_key_name)
def initialize(scope, association_key_name) @scope = scope @association_key_name = association_key_name end
def load_records_for_keys(keys, &block)
def load_records_for_keys(keys, &block) return [] if keys.empty? if association_key_name.is_a?(Array) query_constraints = Hash.new { |hsh, key| hsh[key] = Set.new } keys.each_with_object(query_constraints) do |values_set, constraints| association_key_name.zip(values_set).each do |key_name, value| constraints[key_name] << value end end scope.where(query_constraints) else scope.where(association_key_name => keys) end.load(&block) end
def load_records_in_batch(loaders)
def load_records_in_batch(loaders) raw_records = records_for(loaders) loaders.each do |loader| loader.load_records(raw_records) loader.run end end
def records_for(loaders)
def records_for(loaders) LoaderRecords.new(loaders, self).records end