class EagerGroup::Preloader::AggregationFinder

Attributes

arguments[R]
definition[R]
klass[R]
record_ids[R]
reflection[R]

Public Class Methods

new(klass, definition, arguments, records) click to toggle source
# File lib/eager_group/preloader/aggregation_finder.rb, line 8
def initialize(klass, definition, arguments, records)
  @klass = klass
  @definition = definition
  @reflection = @klass.reflect_on_association(definition.association)
  @arguments = arguments
  @records = records
end

Public Instance Methods

aggregate_hash() click to toggle source
# File lib/eager_group/preloader/aggregation_finder.rb, line 28
def aggregate_hash
  raise NotImplementedError, 'Method "aggregate_hash" must be implemented in subclass'
end
definition_scope() click to toggle source
# File lib/eager_group/preloader/aggregation_finder.rb, line 16
def definition_scope
  reflection.klass.instance_exec(*arguments, &definition.scope) if definition.scope
end
group_by_key() click to toggle source
# File lib/eager_group/preloader/aggregation_finder.rb, line 24
def group_by_key
  @klass.primary_key
end

Private Instance Methods

polymophic_as_condition() click to toggle source
# File lib/eager_group/preloader/aggregation_finder.rb, line 34
def polymophic_as_condition
  reflection.type ? { reflection.name => { reflection.type => @klass.base_class.name } } : []
end