Rails, Sphinx (inking_sphinx) и сортировка по ассоциациям - PullRequest
1 голос
/ 05 июля 2011

У меня есть 3 модели:

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

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

Item (has_many: stats)

и

Скин (has_many: stats)

Использование inking_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"

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

1 Ответ

0 голосов
/ 23 февраля 2012

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

has :skin_id

, а затем, при поиске, фильтруйте по этому. Примерно так:

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