當我試圖做到這一點:Rails的佔位建設陣列
query << ["AND f.name LIKE '%:last_name%' ", :last_name => params[:last_name] ]
但得到一個錯誤。當然,語法是不正確的。 有誰知道該怎麼做?
當我試圖做到這一點:Rails的佔位建設陣列
query << ["AND f.name LIKE '%:last_name%' ", :last_name => params[:last_name] ]
但得到一個錯誤。當然,語法是不正確的。 有誰知道該怎麼做?
這是一個數組還是散列?第一個項目看起來像一個數組,第二個像一個哈希。沒有一些背景,很難說。你可以嘗試,也許這個啓動:既然你不使用軌道3
["AND f.name LIKE '%:last_name%' ", {:last_name => params[:last_name]} ]
這給了我:AND f.name LIKE'%:last_name%'last_name'some_last_name – 2013-03-12 13:25:50
所以提供更多的細節什麼是查詢?你爲什麼要追加這個數組呢? – davidrac 2013-03-12 13:26:45
查詢是:query = [] 。然後我添加字符串到最後我使用JOIN。我想用佔位符來避免SQL注入。 – 2013-03-12 13:55:05
,你應該使用scoped
到鏈查詢
records = Record.scoped(:conditions => { :active => true })
records = records.scoped(:conditions => ["records.name LIKE '%:last_name%' ", { :last_name => params[:last_name] }])
,所以你不必建立這樣的查詢。
但我想逐個構建查詢,因爲它是一個長的,並且JOIN所有 – 2013-03-12 13:54:11
如果查詢是一個數組,你可能想傳遞一個字符串,所以你不數組的數組結束了,你可以這樣做:
的Rails 3根
query << "AND f.name LIKE '%#{params[:last_name]}%' "
梁2
last_name = ActionController::Base.helpers.sanitize(params[:last_name])
query << "AND f.name LIKE '%#{last_name}%' "
這是我開始的,但它允許SQL注入 – 2013-03-12 14:22:29
如果你使用的是rails 3,它會默認清理用戶輸入,如果不是,你可以通過params通過ActionController :: Base.helpers.sanitize(params [:last_name]) – rant 2013-03-12 14:36:19
我仍然得到相同的結果... – 2013-03-12 14:44:20
你在使用rails 3嗎? – jvnill 2013-03-12 13:21:37
「出錯」?什麼錯誤? – Dogbert 2013-03-12 13:22:11
@jvnill - 不,我不 – 2013-03-12 13:22:19