2013-02-25 156 views
1

我on Rails的有关狮身人面像的红宝石的高级别问题:狮身人面像和朋友搜索

说我要搜索是由我的朋友写的文章。 模型结构将是:

User has_many users :through relationships 
Article belongs_to User 

我的问题是:我将在狮身人面像使用什么样的语法,这样的文章用户搜索并只得到由他的朋友写的文章?我无法在网上找到这些信息,并且希望在执行我的解决方案之前处理这种情况。

注:我怀疑一种解决方案是有一个朋友ID数组,然后使用:条件:with => {:id => array_of_friendIDs}。但也许有更有效的方法呢?

回答

1

你基本上是正确的 - 你将需要组装一个朋友id数组并将其传递给搜索,使用:with选项。不过,如何获取该列表与Sphinx并不特别相关。

friend_ids = current_user.users.pluck(:id) 

@articles = Article.search(params['search_term'], :with => {:user_id => friend_ids}) 

使用.pluck会救你的,否则将被专门用于实例一堆用户对象的时候好一点 - 你只需要它们的ID。确保您已将user_id设置为Sphinx的属性(在define_index块中使用has user_id)。

+0

非常感谢这位MrTheWalrus – Laurent 2013-02-27 02:37:20