[問題] Controller 多個filter parameters

作者: matrixki (New Season)   2015-05-16 00:13:07
這個問題有點空泛,但剛玩active records
想請問大大一般業界在實作時是怎麼去操作這塊的
我在做一個搜尋的功能,form 會送出 POST參數到
controller這邊應該怎麼搭配邏輯去編寫呢?
舉例來說 搜尋商品的價格 a 、高度 b、名稱 c
if params.has_key?(:a) or params.has_key?(:b) or params.has_key?(:b
)
@shops = Shop.where("price <= ?", @a).where("name LIKE ?", "%#{@a}
").limit(10)
end
如果要去判斷三個參數有的有送有的沒送,
那勢必要有很多 if elsif或是使用case去撰寫
才能下query來搭配搜尋
但這樣每加一個params來搜尋要改動的地方好多,
規劃起來感覺很差,
想問有沒有比較好的方式?或者是應該搜尋什麼關鍵字去找類似的pattern呢?
作者: hSATAC (cAt Ash)   2015-05-16 13:38:00
可以參考一下 ransack
作者: abc0 (haha)   2015-05-23 10:15:00
where("price <= ? AND "+high+" = ?",price,high)3個照辦說不定可以先組選項Hash, 再刪nil的, 再用hash去query

Links booklink

Contact Us: admin [ a t ] ucptt.com