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

发布于 2025-01-03 04:56:50 字数 507 浏览 1 评论 0原文

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

在我的代码中,我的

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)

希望你能理解我的问题。

How can I use 'or' in a Sunspot search?

In my code I have

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

The search only evaluates the first part.

If I put 'current_user.location.path_ids' first (before ||), I only get the records resulting from that search. If I put 'current_user.location.parent.descendant_ids' first, I get the results from that search. I want the results of both.

I have also tried

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

I hope you understand my question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一笑 2025-01-10 04:56:50

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

查看太阳黑子自述文件。我认为你需要any_of

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

|| is a Ruby operator. This code is basically evaluating the expression current_user.location.path_ids || current_user.location.parent.descendant_ids and passing that value as the second argument to the with method.

Check out the Sunspot README. I think you need any_of:

any_of do
  with(:location_id, current_user.location.path_ids)
  with(:location_id, current_user.location.parent.descendant_ids)
end
樱花落人离去 2025-01-10 04:56:50

虽然我没有使用过Sunspot,但我想我能看出问题所在。

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

我假设 current_user.location.path_idscurrent_user.location.parent.descendant_ids 都是数组,因此您需要将它们与 | 结合起来改为 code> 运算符。

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

Although I haven't used Sunspot, I think I can see the problem.

The || operator is logical OR so it is returning the left operand because it evaluates true.

I am assuming that current_user.location.path_ids and current_user.location.parent.descendant_ids are both arrays, therefore you will need to combine them with the | operator instead.

with(:location_id, current_user.location.path_ids | current_user.location.parent.descendant_ids)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文