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