gpt4 book ai didi

regex - 使用 RegExp 和数组查询

转载 作者:可可西里 更新时间:2023-11-01 10:44:33 24 4
gpt4 key购买 nike

我有一个 Post 类,其作用域如下:

scope :by_tag, ->(tag){ where(:desc => /##{Regexp.escape(tag)}/) }

它在一个标签上工作得很好,但我不能让它在多个标签上工作。

例如:我无法让它给我标有#rails 和#regexp 的帖子。

通过 criteria union,我可以让它返回带有 #rails 或 #regexp 标记的帖子。

我怎样才能让它工作?我正在使用 mongoid,顺便说一下。

提前致谢。


只是发现这不是 OR。发生的情况是,我第二次调用 by_tag 时,它覆盖了之前的。我相信那是因为它具有相同的属性。

有人知道如何解决这个问题吗?谢谢

最佳答案

正则表达式查询往往非常慢。相反,存储一个标签数组并使用 $in 查询该数组。

在 Mongoid 2.x 中使用 all_in

scope :by_tags, ->(*tags) { all_in(tags: *tags) }

对于 Mongoid 3 使用 all merge strategy

scope :by_tags, ->(*tags) { all(tags: *tags) }

关于regex - 使用 RegExp 和数组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com