module Elastics::Result::SearchLoader
Public Class Methods
extended(result)
click to toggle source
extend the collection on extend
# File lib/elastics/result/search_loader.rb, line 11 def self.extended(result) result.collection.each { |h| h.extend(DocumentLoader) } end
should_extend?(result)
click to toggle source
extend if result is a Search or MultiGet
# File lib/elastics/result/search_loader.rb, line 6 def self.should_extend?(result) result.is_a?(Search) || result.is_a?(MultiGet) end
Public Instance Methods
loaded_collection()
click to toggle source
# File lib/elastics/result/search_loader.rb, line 15 def loaded_collection @loaded_collection ||= begin records = [] # returns a structure like {Comment=>[{"_id"=>"123", ...}, {...}], BlogPost=>[...]} h = Utils.group_array_by(collection) do |d| d.model_class end h.each do |klass, docs| records |= klass.find(docs.map(&:_id)) end class_ids = collection.map { |d| [d.model_class.to_s, d._id] } # Reorder records to preserve order from search results records = class_ids.map do |class_str, id| records.detect do |record| record.class.to_s == class_str && record.id.to_s == id.to_s end end records.extend Struct::Paginable records.setup(collection.total_entries, variables) records end end