2
我的應用程序允許通過GET進行篩選。動態插入大於> |小於<|等於=運營商到查詢
www.mysite.com/rating=5
www.mysite.com/rating>5
www.mysite.com/rating<5
我很容易分裂params[:filter]
成:
column
(過濾器)value
(5)operator
(=,>,<)
所以在我查詢了我的之後10模型,並做了一些基本的排序,如果設置,我過濾結果。
if params[:filter] != "all"
.
.
case operator
when "="
laptops = laptops.where("laptops.rating = ?", value)
when ">"
laptops = laptops.where("laptops.rating > ?", value)
when "<"
laptops = laptops.where("laptops.rating < ?", value)
end
end
我想知道是否有什麼辦法可以添加operator
動態類似value
。特別是當我添加>=
,<=
代碼重複5次!
我想:
laptops.where("laptops.rating ? ?", operator, value)
但是這增加了運營商作爲一個字符串,這自然導致了錯誤
Syntax Error: near "laptops.rating '>' '6'"
任何想法如何,我可以讓我的代碼越幹?
使用PostgreSQL
偉大的建議,謝謝! –