如何在太阳黑子搜索中使用'或'?
在我的代码中我有
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)
我希望你理解我的问题。
答案 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_ids
和current_user.location.parent.descendant_ids
都是数组,因此您需要将它们与|
运算符组合在一起。
with(:location_id, current_user.location.path_ids | current_user.location.parent.descendant_ids)