Class: EagerGroup::Preloader::ManyToMany

Inherits:
AggregationFinder show all
Defined in:
lib/eager_group/preloader/many_to_many.rb

Instance Attribute Summary

Attributes inherited from AggregationFinder

#arguments, #definition, #klass, #record_ids, #reflection

Instance Method Summary collapse

Methods inherited from AggregationFinder

#definition_scope, #group_by_key, #initialize

Constructor Details

This class inherits a constructor from EagerGroup::Preloader::AggregationFinder

Instance Method Details

#aggregate_hashObject



10
11
12
13
14
15
16
17
# File 'lib/eager_group/preloader/many_to_many.rb', line 10

def aggregate_hash
  scope = klass.joins(reflection.name).tap{|query| query.merge!(definition_scope) if definition_scope}

  scope.where(group_by_foreign_key => record_ids).
    where(polymophic_as_condition).
    group(group_by_foreign_key).
    send(definition.aggregation_function, definition.column_name)
end

#group_by_foreign_keyObject



6
7
8
# File 'lib/eager_group/preloader/many_to_many.rb', line 6

def group_by_foreign_key
  "#{reflection.join_table}.#{reflection.foreign_key}"
end