Rails, Sphinx (Think_sphinx) и сортировка по ассоциациям

У меня 3 модели:

Статистика (принадлежит_to: элемент)

  t.integer :skin_id
  t.integer :item_id
  t.integer :rating

Элемент (has_many: статистика)

и

Скин (has_many: stats)

Используя Think_sphinx, я хочу создать отдельный индекс для элементов, отсортированных по: рейтингу для конкретного: skin_id

Итак, я пытаюсь:

  define_index 'sort_by_rate' do
    indexes stats(:rating), :as => :ratings, :sortable => true
  end

Но это сгенерирует индекс для всех: skin_id (в модели Stat), а не для конкретного.

Другими словами, мне нужно собрать все предметы, отсортированные по Stat.rating, со Stat.skin_id == 1 (например).

Вот пример SQL:

"SELECT `stats`.* FROM `stats` INNER JOIN `items` ON `items`.`id` = `stats`.`item_id` WHERE `stats`.`skin_id` = 1 ORDER BY rating DESC"

Любые решения очень приветствуются!


person There Are Four Lights    schedule 05.07.2011    source источник
comment
Как вы ожидаете, что сортировка элементов по рейтингам будет вести себя? У каждого предмета есть несколько оценок, поэтому неясно, какое поведение вам нужно.   -  person pat    schedule 06.07.2011


Ответы (1)


Возможно, вам следует иметь в своем блоке define_index:

has :skin_id

а затем при поиске фильтруйте по этому. Что-то вроде этого:

Item.search(:with => {:skin_id => skin.id}, :order_by => 'ratings ASC')
person Weetu    schedule 23.02.2012