There's plenty of specs for testing this (towards the end of  
attribute_spec.rb) - feel free to add one for drilling through  
associations to HABTM joins (seems it's using the first join as a  
check instead of the last?) - I'll try to get to it when I have time  
though :)

-- 
Pat

On 02/06/2009, at 11:36 PM, James Healy wrote:

>
> Pat,
>
> The changes to :source => :query MVAs in 1.1.19 have improved this
> situation, but some cases still aren't working the way I expected.
> However I'm realising that maybe I need to adust my expectations.
>
> My Edition model habtm Tags. If I use :source => :query to add the tag
> ids to my Edition index then I get the result I expected. A query that
> returns edition_id and tag_id pairs.
>
>    has tags(:id), :as => :tag_ids, :source => :query
>
>    sql_attr_multi = uint tag_ids from query; SELECT  
> `editions_tags`.`edition_id` * 12 + 3 AS `id`,  
> `editions_tags`.`tag_id` AS `tag_ids` FROM `editions_tags`
>
> If I try to add supplier tags to the Edition index however, I end up
> with a source query that returns supplier_id and tag_id pairs.
>
>    has supplier.tags(:id), :as => :tag_ids, :source => :query
>
>    sql_attr_multi = uint tag_ids from query; SELECT  
> `suppliers_tags`.`supplier_id` * 12 + 3 AS `id`,  
> `suppliers_tags`.`tag_id` AS `tag_ids` FROM `suppliers_tags`
>
> In the second case I was hoping to get edition_ids and tag_ids as  
> well.
> The issue is presumably that I'm using :source => :query on a nested
> association. Am I barking up the wrong tree?
>
> James
>
>
> James Healy wrote:
>>
>> Sorry Pat, got another one for you :)
>>
>> I think :source => :query generates an incorrect config file when the
>> attribute being indexed is through a has_and_belongs_to_many  
>> association.
>>
>> As I understand it, the query should return a list of edition_id,  
>> tag_id
>> pairs?
>>
>> My index definition for my Edition class contains the following
>> attribute line:
>>
>>  has tags(:id), :as => :tag_ids, :source => :query
>>
>> which generates this line in my sphinx config:
>>
>>  sql_attr_multi = uint tag_ids from query; SELECT  
>> `tags`.`edition_id` * 12 + 0 AS `id`, `tags`.`id` AS `tag_ids` FROM  
>> `tags`
>>
>> This is close, but my tags table doesn't have an edition_id field.
>>
>> To confuse TS even more, if I try the following line in my edition:
>>
>>  has supplier.tags(:id), :as => :tag_ids, :source => :query
>>
>> I get this line in my config:
>>
>>  sql_attr_multi = uint tag_ids from query; SELECT  
>> `tags_suppliers`.`supplier_id` * 12 + 0 AS `id`,  
>> `tags_suppliers`.`id` AS `tag_ids` FROM `tags_suppliers`
>>
>> The first field should be the edition id, and the second refers to  
>> a non
>> exiting tags_suppliers.id.
>>
>> -- James Healy <jimmy-at-deefa-dot-com>  Wed, 13 May 2009 18:10:59  
>> +1000
>>
>>>
>
> >


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