2011-07-06 63 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