ruby-on-rails Ransack:如何使用AND条件查找具有相关记录组合的记录?

46scxncf  于 2023-06-07  发布在  Ruby
关注(0)|答案(1)|浏览(199)

假设我有一个BlogPost对象。现在我想找到有2个或更多的相关特定标签的博客文章。
对于我的搜索,我使用ransack,我想找到所有的博客文章,有标签与ID 5和7。
我的请求看起来像这样:

"q":{
   "active_tags_tag_id_in":[5,7],
}

现在的问题是,这将给予我任何职位与标签5或标签7适用。
然而,我想要的是标签5和标签7都应该被应用。
所以从OR切换到AND逻辑。我在ransack文档中找不到任何告诉我如何做到这一点的东西。

w8biq8rn

w8biq8rn1#

不幸的是,Ransack没有很好的高级搜索文档,但Heroku上有Ransack演示示例网站:
http://ransack-demo.herokuapp.com/users/advanced_search
你可以把它当作一个沙盒。如果你试着在那里做实验,你会注意到在Ransack中有群体条件这样的东西
要创建组,您需要在标准q参数中定义g参数。要在组中定义AND/OR条件,需要定义嵌套的m参数
最后,您的请求参数看起来像这样

"q": {
  "g": [
    {
      "m": "and",
      "active_tags_tag_id_eq": 5
    },
    {
      "m": "and",
      "active_tags_tag_id_eq": 7
    }
  ]
}

相关问题