使用Thinking Sphinx搜索索引模型对象的集合

时间:2011-07-06 02:51:18

标签: ruby-on-rails-3 thinking-sphinx

我有一个属于用户的技术模型,并由Thinking Sphinx索引。

我的模型中还有一个方法,它返回一个Technique对象数组:

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

这只是采用用户拥有的技术,减去已经是'self'技术对象的子项的技术,以及'self'本身,并返回剩余的技术对象。

然后在控制器中我实例化一组可能的孩子,如:

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

这将返回“#”

的“未定义方法'搜索'

不确定这是否相关,但发生的控制器不是TechniquesController。

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

有什么想法吗?

如果我需要提供更多信息,请与我们联系。谢谢。

1 个答案:

答案 0 :(得分:5)

我担心思维狮身人面像是不可能的 - 至少,不是那么简单。您可以做的是使用您想要搜索的对象,获取它们的id,并在过滤器中使用它:

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

Sphinx有自己的id,但是来自数据库的主键被Thinking Sphinx存储为属性sphinx_internal_id