比方說,我有一個表單,用戶可以搜索名稱以特定name
字符串開頭的人,例如「Mi」會找到「Mike」和「Miguel」。我可能會創建一個查找的語句,像這樣:帶綁定變量和可選參數的條件
find(:all, :conditions => ['name LIKE ?', "#{name}%"])
假設形式也有兩個可選字段,hair_color
和eye_color
,可用於進一步篩選結果。忽略查詢的名稱部分,對人的發現語句可以在可選參數任意數量的可能是這樣的:
find(:all, :conditions => { params[:person] })
這對於我的兩個可選參數將表現爲這相當於:
find(:all, :conditions => { :hair_color => hair_color, :eye_color => eye_color })
我想不通的是如何這兩種查詢,其中必填字段,「名稱」適用於「喜歡」條件之上,並且可選hair_color
和eye_color
合併PARAMET可以添加ers(也可能是其他)來進一步過濾結果。
我當然可以建立一個查詢字符串來做到這一點,但我覺得必須有一個更優雅的「rails方式」。我如何將強制綁定參數與可選參數合併?
只是好奇。如果指定名稱字符串也是可選的,那麼如何擴展它? – Waseem 2009-10-29 08:22:29
我知道必須有一個很好的乾淨方式來做到這一點。總是有鐵軌:-)謝謝! – SingleShot 2009-10-29 15:32:38
@waseem,我修改瞭解決方案來回答你的問題。 – EmFi 2009-10-29 16:55:59