1

我在 Rails 项目中使用 Sunspot 1.3.0。

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

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

将帖子与正好为 1、35 的类别匹配的正确语法是什么?

例如,帖子
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])

但这给了我以下错误: ["1", "3", "5"]:Array 的未定义方法`gsub'

4

1 回答 1

1

所以,我最终使用“all_of”来解决这个问题。
如果它对其他人有帮助,这就是我所做的:

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

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

一旦 Sunspot 返回了它的结果集,我就过滤掉了不完全匹配的帖子。

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

于 2012-02-06T12:39:40.493 回答