簡體   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