Hi Pat.
The problem resides in :
http://github.com/freelancing-god/thinking-sphinx/tree/master/lib/thinking_sphinx/active_record.rb#L148
in the method :
def sphinx_document_id
(self.id * ThinkingSphinx.indexed_models.size) +
ThinkingSphinx.indexed_models.index(self.class.name)
end
When you delete a STI object, toggle_deleted and other methods use
this method. Because ThinkingSphinx.indexed_models does not contain
the STI models but only the models that have an index, this method
fails.
Nicolas.
On 18 oct, 16:33, Pat Allan <[EMAIL PROTECTED]> wrote:
> Hi Nicolas
>
> Not sure where you've made this code change? Also, with the STI
> reworking from a month or two ago, I thought this situation was
> covered by self.class_from_crc in ThinkingSphinx::Collection. Could be
> wrong though...
>
> Cheers
>
> --
> Pat
>
> On 10/10/2008, at 5:15 PM, slainer68 wrote:
>
>
>
> > Hi!
>
> > I think I've found a STI bug in TS. The problem resides in the method
> > sphinx_document_id that is mainly use by delta methods.
> > When calculating the sphinx_document_id, TS uses
> > ThinkingSphinx.indexed_models that only contains the models that have
> > an index (and does not contains the childs). When trying to calculate
> > the index from the name of a STI model it fails with "TypeError: nil
> > can't be coerced into Fixnum" because the child model name is not in
> > the array...
>
> > For now I've changed the method to find the index from
> > self.class.base_class.name instead of self.class.name.
> > Don't know if that is the best solution and if it does not create
> > duplicate ids, but it seems to work for me.
>
> > Nicolas.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---