按多个值或 nil 搜索过滤器
Ransack filter by multiple values or nil
我有一个 API 使用 jsonapi.rb 和 Ransack 编写的。
我的模型有一个 Car 和 color 属性,它是一个整数或零。
我希望能够通过多个颜色数字或空值来过滤此属性。它看起来像这样:
/cars?filter[color_in]=1,2,nil
Ransack 可以按多个值搜索,也可以按空值过滤。
但是我怎样才能在这里将空值传递给 Ransack?
一个简单的方法是将空值转换为另一个值并按它进行搜索。
在我的例子中,column 是一个整数,所以我想将 null 转换为 0 对于我想过滤的所有属性。
添加到模型:
ransacker :color do
Arel.sql('COALESCE(color, 0)')
end
然后搜索:
/cars?filter[color_in]=1,2,0
所以查询将如下所示:
WHERE COALESCE(color, 0) IN ('1', '2', '0')
我有一个 API 使用 jsonapi.rb 和 Ransack 编写的。
我的模型有一个 Car 和 color 属性,它是一个整数或零。 我希望能够通过多个颜色数字或空值来过滤此属性。它看起来像这样:
/cars?filter[color_in]=1,2,nil
Ransack 可以按多个值搜索,也可以按空值过滤。 但是我怎样才能在这里将空值传递给 Ransack?
一个简单的方法是将空值转换为另一个值并按它进行搜索。 在我的例子中,column 是一个整数,所以我想将 null 转换为 0 对于我想过滤的所有属性。
添加到模型:
ransacker :color do
Arel.sql('COALESCE(color, 0)')
end
然后搜索:
/cars?filter[color_in]=1,2,0
所以查询将如下所示:
WHERE COALESCE(color, 0) IN ('1', '2', '0')