Good point re full namespacing of FauxColumn - and yes, calling
define_indexes is necessary - sorry, I should have realised that.

Good to know you've got it sorted :)

--
Pat

On 9/7/2010, "BigRefT" <[email protected]> wrote:

>One last note... You may have to reference FauxColumn as
>ThinkingSphinx::Index::FauxColumn.
>
>On Sep 7, 10:43 am, BigRefT <[email protected]> wrote:
>> Thanks Pat! What you gave me is close, but it's missing something.
>>
>> Here is my setup:
>>
>> Order has a define_index with indexes and attributes (nothing
>> special).
>> Now I have a plugin that will extend Order by including a module
>> (Order.send(:include, OrderMixin)).
>>
>> The problem I have with your suggestion is that the indexes aren't
>> actually created until after the mixin happens.
>>
>> So if I have this:
>>
>> class Order < ActiveRecord::Base
>>   define_index do
>>     ...
>>   end
>> end
>>
>> module OrderMixin
>>   def self.included(base)
>>     source = sphinx_indexes.first.sources.first
>>     columns = FauxColumn.coerce(:created_at)
>>     options = {}
>>     ThinkingSphinx::Attribute.new(source, columns, options)
>>   end
>> end
>>
>> Order.sphinx_indexes is actually empty because 'define_indexes' hasn't
>> been called yet. Now, if I call 'define_indexes' before it try add my
>> new attribute it all works as expected.
>>
>> Thanks for helping out! Let me know if you think there is a problem
>> with calling 'define_indexes' on my own.
>>
>> On Sep 6, 10:18 am, "Pat Allan" <[email protected]> wrote:
>>
>>
>>
>> > Hi Tony
>>
>> > You're definitely wading into undocumented (and untried) waters - I've
>> > not done this before, nor have I heard of anyone trying to do this
>> > before.
>>
>> > Still, it shouldn't be too difficult (in theory). The code you want to
>> > keep an eye on is ThinkingSphinx::Index::Builder... but here's an
>> > example, adding an attribute to a given source:
>>
>> >   source = Order.sphinx_indexes.first.sources.first
>> >   columns = FauxColumn.coerce(:created_at)
>> >   options = {:type => :datetime} # not needed in this case - TS will
>> > figure it out
>> >   ThinkingSphinx::Attribute.new(source, columns, options)
>>
>> > An index can have many sources, but starts with just one, so you should
>> > be able to access existing sources easily enough. The columns can be
>> > symbols referring to columns, and the options are a hash of options you
>> > may pass through to a 'has' call normally. Also: the attribute will
>> > automatically add itself to the source.
>>
>> > Hope this helps!
>>
>> > --
>> > Pat
>>
>> > On 9/1/2010, "BigRefT" <[email protected]> wrote:
>>
>> > >I have searched and searched but have yet to find any info on if this
>> > >is possible. I have an Order model that calls define_index in the main
>> > >app. I am creating a plug-in that extends the Order model and I want
>> > >to insert a new attribute into the index for Order. Is this possible?
>>
>> > >I have read through post after post with nothing even close, and I
>> > >have tried to go into the TS code base and see if I can do it
>> > >manually.
>>
>> > >The closest I got was this:
>>
>> > >Order.sphinx_index.first.attributes << ...
>>
>> > >Where ... would be the missing piece. I know it needs to be an
>> > >Attribute, but I don't where to start.
>>
>> > >Any help would be appreciated.
>>
>> > >Thanks
>> > >Tony
>>
>> > >--
>> > >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 
>> > >athttp://groups.google.com/group/thinking-sphinx?hl=en.
>
>-- 
>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.
>

-- 
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