Its does not work, becouse posts not owned projects in database.
Posts aleady have attribute from owner (has owner.city_id, :as
=> :city_id).

How i'm can force join or maybe add sql condition in where (but as i'm
known it's imposible)?

On 13 дек, 10:01, Pat Allan <[email protected]> wrote:
> To force joins to all the polymorphic tables, you'll need to add a  
> field or - probably better - an attribute that uses a common field  
> across all the appropriate models. The best choice is, of course, id.
>
> So:
>
> has owner(:id), :as => :owner_id
>
> And then both clubs and projects should be included in the SQL  
> statement *IF* there are posts owned by projects in the database.  
> Thinking Sphinx can't figure out by itself which models are  
> appropriate for polymorphic joins, so it looks at the existing data.  
> If there's no data joining posts to clubs or projects, then they won't  
> have the needed joins. I know it's not an ideal situation, but I  
> haven't found a better way yet.
>
> --
> Pat
>
> On 12/12/2008, at 10:01 PM, Shumkov wrote:
>
>
>
> > Hello, i have some problem with index conditions.
> > I'm have Post model with polymorphic relationship with Club model and
> > Project model. And i can't index posts if club or project is not
> > active.
>
> > Look this:
>
> > class Post < ActiveRecord::Base
>
> >  belongs_to :owner, :polymorphic => true
>
> >  define_index do
> >    indexes title, cached_tag_list
> >    indexes body, :html_strip => true
>
> >    has owner.city_id, :as => :city_id
>
> >    where "(`clubs`.activated_at IS NOT NULL OR
> > `projects`.activated_at IS NOT NULL)"
>
> >    set_property :match_mode => :boolean
> >    set_property :delta => true
> >  end
>
> > end
>
> > class Club < ActiveRecord::Base
> >  has_many :posts, :as => :owner
> > end
>
> > class Project < ActiveRecord::Base
> >  has_many :posts, :as => :owner
> > end
>
> > If i'm have projects and clubs and posts index sql query is good! But
> > if i'm don't have Project for example in index sql query join with
> > table projects is not present. And i'm have error on indexing:
>
> > ERROR: index 'post_core': sql_range_query: Unknown column
> > 'projects.activated_at' in 'where clause' (DSN=mysql://
> > root:*...@localhost:3306/clubovorot).
>
> > What can i do?
--~--~---------~--~----~------------~-------~--~----~
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