Модель Thinking Sphinx присоединяется к поиску

Возможно, такая проблема уже обсуждалась здесь, но я даже не понимаю, как правильно гуглить такой случай.

В Rails у меня есть следующие модели:

Пользователь (has_many book_specimens, has_many дружбы, has_many друзей через дружбу, has_many книг через book_specimens)

Образец_книги (принадлежит_пользователю, принадлежит_книге)

Книга (has_many book_specimens, has_many владельцев через book_specimens)

Дружба (принадлежит_ пользователю, принадлежит_ другу)

Мне нужно искать книги среди тех, которые есть у друзей пользователя. Если взломать логику not-sql, это будет выглядеть как

результаты = [];

friends.each do | друг |

results.push (условия поиска в книге: {title: 'Lorem', owner_id: friend.id})

конец

Есть ли способ сделать это одной командой? Как тогда мне подготовить индексы?

Заранее спасибо.


person ProdoElmit    schedule 25.07.2013    source источник


Ответы (1)


В вашей модели Книги будут определены следующие индексы (помимо других, которые вы можете выбрать):

define_index do
  ....
  ....
  indexes title
  has owner_ids
end

С этим индексом, если у вас есть целевой «пользователь», команда поиска будет выглядеть так:

Book.search conditions: {title: 'Lorem'}, with: {owner_ids: user.friend_ids}
person Arkhitech    schedule 25.07.2013
comment
Спасибо! Работает, как ожидалось, но с одним изменением: has owner_ids должно быть has owners.id, :as => :owner_ids - person ProdoElmit; 26.07.2013