2013-02-25 106 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