class PolymorphicPreloader

Constants

VERSION

Attributes

association_name[RW]
grouped_objects[RW]

Public Class Methods

new(objects, association_name) click to toggle source
# File lib/polymorphic_preloader.rb, line 6
def initialize(objects, association_name)
  self.association_name = association_name
  self.grouped_objects = objects.group_by { |object| object.send("#{association_name}_type") }
end

Public Instance Methods

preload!(associations) click to toggle source
# File lib/polymorphic_preloader.rb, line 11
def preload!(associations)
  grouped_objects.each_pair do |object_type, objects_with_same_association|
    target_associations = associations[object_type.to_s.underscore.to_sym]

    if target_associations.present?
      preloader.preload objects_with_same_association, association_name => target_associations
    end
  end
end

Private Instance Methods

preloader() click to toggle source
# File lib/polymorphic_preloader.rb, line 23
def preloader
  @preloader ||= ActiveRecord::Associations::Preloader.new
end