2011-07-06 84 views
3

我有一個屬於用戶的技術模型,它由Thinking Sphinx編制索引。使用Thinking Sphinx搜索索引模型對象的集合

我也有我的模型的方法,返回技術對象的數組:

def possible_children(user) 
    user.techniques - (self.children + [self]) 
end 

這只是需要一個用戶擁有的技術,減去出那些是已經是孩子的技巧'self'技術對象,以及'self'本身,並返回剩餘的技術對象。

然後在控制器我實例可能的子集,像這樣:

@possible_children = @technique.possible_children(current_user).search params[:search] 

這將返回「爲#未定義的方法‘搜索’」

不知道這是否是相關的,但控制器這發生在不是TechniquesController。

我想要做的是搜索模型方法返回的任意集合。

任何想法?

讓我知道我是否需要提供更多信息。謝謝。

回答

5

恐怕這與思考獅身人面像不可能 - 至少,不是那麼簡單。你可以做的就是用你要搜索整個對象,抓住他們的身份證,並用它在過濾器:

possible_children = @technique.possible_children(current_user) 
Technique.search params[:search], 
    :with => {:sphinx_internal_id => possible_children.collect(&:id)} 

獅身人面像有它自己的ID,而是從數據庫中的主鍵被存儲爲屬性思維獅身人面像的sphinx_internal_id

+0

謝謝帕特,看起來像這樣做。 – Mitya

+0

:sphinx_internal_id!我在谷歌上找了半小時。謝謝。 – gtd