class ThinkingSphinx::Middlewares::Glazier::Inner

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/thinking_sphinx/middlewares/glazier.rb, line 17
def initialize(context)
  @context = context
  @indices = {}
end

Public Instance Methods

call() click to toggle source
# File lib/thinking_sphinx/middlewares/glazier.rb, line 22
def call
  return if context[:panes].empty?

  context[:results] = context[:results].collect { |result|
    ThinkingSphinx::Search::Glaze.new context, result, row_for(result),
      context[:panes]
  }
end

Private Instance Methods

indices_for(model) click to toggle source
# File lib/thinking_sphinx/middlewares/glazier.rb, line 35
def indices_for(model)
  @indices[model] ||= context[:indices].select do |index|
    index.model == model
  end
end
row_for(result) click to toggle source
# File lib/thinking_sphinx/middlewares/glazier.rb, line 41
def row_for(result)
  ids = indices_for(result.class).collect do |index|
    result.send index.primary_key
  end

  context[:raw].detect { |row|
    row['sphinx_internal_class'] == result.class.name &&
    ids.include?(row['sphinx_internal_id'])
  }
end