使用或/ ||在太阳黑子搜索

时间:2012-02-05 13:47:44

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

如何在太阳黑子搜索中使用'或'?

在我的代码中我有

with(:location_id, current_user.location.path_ids || current_user.location.parent.descendant_ids)

搜索仅评估第一部分。

如果我先放置'current_user.location.path_ids'(在||之前),我只会得到该搜索产生的记录。如果我首先放入'current_user.location.parent.descendant_ids',我会从该搜索中获得结果。我想要两者的结果。

我也试过

with(:location_id, current_user.location.path_ids || :location_id, current_user.location.parent.descendant_ids)

我希望你理解我的问题。

2 个答案:

答案 0 :(得分:2)

||是一个Ruby运算符。此代码基本上是评估表达式current_user.location.path_ids || current_user.location.parent.descendant_ids并将该值作为第二个参数传递给with方法。

查看Sunspot README。我认为你需要any_of

any_of do
  with(:location_id, current_user.location.path_ids)
  with(:location_id, current_user.location.parent.descendant_ids)
end

答案 1 :(得分:1)

虽然我没有使用太阳黑子,我想我可以看到问题。

||运算符是逻辑OR,因此它返回左操作数,因为它的计算结果为true。

我假设current_user.location.path_idscurrent_user.location.parent.descendant_ids都是数组,因此您需要将它们与|运算符组合在一起。

with(:location_id, current_user.location.path_ids | current_user.location.parent.descendant_ids)