Мышление Сфинкса, Rails,: has_many: through => ... has - PullRequest
2 голосов
/ 22 декабря 2009

Модель: Продукт

has-many product-categories, :through => ...

Вопрос 1) Как мне индексировать связь многих со многими с мыслящим сфинксом

Должен ли я использовать имеет?

Вопросы 2) Как это искать в контроллере

ех. Product.search params [: search-params],: условие => {некоторые_условия}

1 Ответ

2 голосов
/ 22 декабря 2009

Я не пробовал это на has_many: так что пристрелите меня в огне, если у вас есть, но я не понимаю, почему это не сработает и для вас (я использую это для ассоциации has_many Вы в основном используете свою ассоциацию в определении индекса. Затем поиск по этой модели также будет искать дочерние записи.

class Product < ActiveRecord::Base
  has_many :product_categories

  define_index do
    indexes a_product_field_to_index
    indexes product_categories.name, :as => :categories
  end
end

В контроллере:

@products = Product.search(params[:query] || '')
#params[:query] is simply the search string, I can't remember if you need to sanitize this, I would always assume you do unless you find out otherwise

По виду:

@products.each do |p| 
  p.categories.each do |cat|
  end
end

Если у вас его еще нет, я очень рекомендую книгу о сфинксе для мышления, доступную по заглушке: https://peepcode.com/products/thinking-sphinx-pdf

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...