Sunspot.search块中的正确语法是什么,以返回与category_ids数组匹配的帖子

时间:2012-02-03 13:17:40

标签: ruby-on-rails sunspot sunspot-rails

我在Rails项目中使用Sunspot 1.3.0。

Post.search do
  with(:category_ids, [1, 3, 5])
end

将匹配类别为1,3或5的帖子。

匹配具有正好1,3 5类别的帖子的正确语法是什么?

E.g。帖子在哪里 category_ids = [1] - 不匹配
category_ids = [1,3] - 不匹配
category_ids = [1,3,5] - 确实匹配
category_ids = [1,3,5,7] - 不匹配

我试过

with(:category_ids).equal_to([1,3,5])

但是这给了我以下错误: 未定义方法`gsub'表示[“1”,“3”,“5”]:数组

1 个答案:

答案 0 :(得分:1)

所以,我最终使用“all_of”来解决这个问题 万一它可以帮助其他人,这就是我所做的:

with(:category_ids).all_of([1,3,5])

这将匹配[1,3,5]的帖子类别,但也包含任何其他类别的帖子,例如[ 0 ,1,3,5, 7 ]也会匹配。

一旦太阳黑子返回其结果集,我就过滤掉了与之完全不匹配的帖子。

这就是我想要的,但我希望有更简洁的方法来做到这一点。