Hi Gordon

Ah, that's a little tricky. There's three approaches I can think of.

Option A: add another association to A for just active Bs:
  has_many :active_bs, :class_name => 'B', :conditions => {:active => true}

And then add a join to that association in your index, plus the attribute using 
a bit of SQL. If you're using your original bs association somewhere, you'll 
need to make sure you get the table alias correct in this SQL snippet:

  define_index do
    join active_bs
    has "COUNT(bs.id) > 0", :as => :active_bs, :type => :boolean
  end

Option B (MySQL only!): Use the standard association, but put more complexity 
into the SQL snippet:

  define_index do
    join bs
    has "SUM(bs.active) > 0", :as => :active_bs, :type => boolean
  end

Option C is just like B, but for PostgreSQL. This is where it gets complex, as 
booleans are data types here:

  define_index do
    join bs
    has "SUM(CASE bs.active WHEN TRUE THEN 1 ELSE 0 END) > 0", :as => 
:active_bs, :type => :boolean
  end

Hope one of these suits.

Cheers

-- 
Pat

On 13/07/2012, at 2:56 PM, Gordon Friebe wrote:

> Hi,
> 
> I have a Model A that is being indexed. Connected to model A via a has_may 
> relatiosnhip is model B.
> Model B has a boolean attribute active.
> 
> My index needs an attribute that shows me whether there are any active Bs 
> connected to A.
> 
> define index do
>   has bs, as: :active
> end
> 
> So I need to do A.search with: {active: true}.
> 
> How can this be done? I just cannot find how to do this with thinking sphinx.
> Thanks a lot!
> 
> Gordon
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/thinking-sphinx/-/d4Kp9g2wAWoJ.
> 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