我有一个属于用户的技术模型,并由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方法返回的任意集合。
有什么想法吗?
如果我需要提供更多信息,请与我们联系。谢谢。
答案 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
。