我想構建一個微型引擎,將允許通過用戶輸入在飛行中建立一個搜索查詢。我得到的列名,並在PARAMS搜索字符串,讓我們假設:ActiveRecord:SQL注入阻力wheres
params = {:filter_column => "column_name", :filter_string => "search term"}
我知道,如果我只是調用一個標準的排序,其中對我的模型,可以將沿着線:
ModelName.where("column_name LIKE ?", params[:filter_string])
我遇到的問題是我試圖編譯我的過濾器列表,然後將它們一次應用於搜索。在我調用where方法之前,我可以建立where字符串嗎?
我已經試過:
ModelName.where("? LIKE ? ", column_name, search_term)
沒有多少運氣。任何提示,提示或指針?
謝謝!
這爲我做了詭計。允許更精細的穀物控制是至關重要的。另外,我覺得有點骯髒打字任何SQL ...在這種情況下,「喜歡」... – jaydel
是的我沒有使用metawhere足夠在我自己的代碼中,但即使對於小事情也是非常好的。同樣的傢伙最近也出現了'squeel'這似乎是一個進化 - 還沒有看過它,但只是fyi。 – MissingHandle