module ActiveRecord::Associations::Preloader::ThroughAssociation

def through_scope

def through_scope
  scope = through_reflection.klass.unscoped
  if options[:source_type]
    scope.where! reflection.foreign_type => options[:source_type]
  else
    unless reflection_scope.where_values.empty?
      scope.includes_values = Array(reflection_scope.values[:includes] || options[:source])
      scope.where_values    = reflection_scope.values[:where]
      scope.bind_values     = reflection_scope.bind_values
    end
    scope.references! reflection_scope.values[:references]
    scope = scope.order reflection_scope.values[:order] if scope.eager_loading?
  end
  scope
end