Hi Pat,

I have a couple of STI models that aren't working with facet searches.

They look like:

class Medium < ActiveRecord::Base
  define_index do
    ...
    indexes :type, :facet => true
    ...
  end
end

class Video < Medium; end
class Document < Medium; end
class Story < Document; end
class Joke < Document; end

etc.

When I try to do a Medium.facet 'foo' I get an exception thrown on
line 113 of facet_search.rb (on version 1.3.18) because the facet
returned by #facet_from_object is nill.  Seems that all the classes
that inherit from Medium have an empty array returned by
#sphinx_facets. The Medium object has the :type_facet in the array
from #sphinx_facets.

I've monkey patched TS with the following, and it seems to work (our
models only have 1 index each), but I haven't looked much at TS's
innards, so if you have a better solution, please let me know:

class ThinkingSphinx::FacetSearch
  def facet_from_object(object, name)
    if object.sphinx_indexes.first.model != object.class
      faceted_object = object.sphinx_indexes.first.model
    end
    faceted_object.sphinx_facets.detect { |facet| facet.attribute_name
== name }
  end
end

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to