0

也许这里已经讨论过这样的问题,但我什至无法意识到,如何正确地用谷歌搜索这种情况。

在 Rails 中,我有以下模型:

用户(has_many book_specimens、has_many Friendship、has_many Friends through Friendship、has_many book through book_specimens)

Book_specimen (belongs_to user, belongs_to book)

书(has_many book_specimens, has_many owner through book_specimens)

友谊(belongs_to 用户,belongs_to 朋友)

我需要的是在用户朋友拥有的书籍中搜索书籍。如果闯入非 sql 逻辑,它看起来像

结果 = [];

朋友。每个人都做|朋友|

results.push(Book.search 条件: {title: 'Lorem', owner_id:friend.id})

结尾

有什么办法可以在一个命令中完成吗?那我应该如何准备索引呢?

提前致谢。

4

1 回答 1

3

您的 Books 模型将定义以下索引(除了您可能选择的其他索引):

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

有了这个索引,假设您有目标“用户”,搜索命令将变为:

Book.search conditions: {title: 'Lorem'}, with: {owner_ids: user.friend_ids}
于 2013-07-25T23:39:56.433 回答