繁体   English   中英

按多个值或 nil 进行 Ransack 过滤

[英]Ransack filter by multiple values or nil

我有一个使用 jsonapi.rb 和 Ransack 编写的 API。

我的 model 有一个带有颜色属性的汽车,它是 integer 或零。 我希望能够通过多个颜色数字或空值过滤此属性。 它看起来像这样:

/cars?filter[color_in]=1,2,nil

Ransack 可以按多个值搜索,也可以按 null 值过滤。 但是我怎样才能在这里将一个空值传递给 Ransack?

一个简单的方法是将 null 转换为另一个值并通过它进行搜索。 在我的情况下,列是 integer,所以我想将 null 转换为 0,以获得我想要过滤的所有属性。

添加到 model:

ransacker :color do
  Arel.sql('COALESCE(color, 0)')
end

然后搜索:

/cars?filter[color_in]=1,2,0

所以查询将如下所示:

WHERE COALESCE(color, 0) IN ('1', '2', '0')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM