Method: Sunspot::InstantiatedFacet#populate_instances!

Defined in:
lib/sunspot/instantiated_facet.rb

#populate_instances!Object

Hydrate all rows for the facet. For data accessors that can efficiently batch load, this is more efficient than individually lazy-loading instances for each row, but allows us to still stay lazy and not do work in the persistent store if the instances are not needed.



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/sunspot/instantiated_facet.rb', line 19

def populate_instances! #:nodoc:
  ids = rows.map { |row| row.value }
  reference_class = Sunspot::Util.full_const_get(@facet_data.reference.to_s)
  accessor = Adapters::DataAccessor.create(reference_class)
  instance_map = accessor.load_all(ids).inject({}) do |map, instance|
    map[Adapters::InstanceAdapter.adapt(instance).id] = instance
    map
  end
  for row in rows
    row.instance = instance_map[row.value]
  end
end