[问题] 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