[英]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.