我試圖找到它作爲兩個條件的結果查詢的模型的結果。Rails - 查找兩個模型字段的條件
我有一個搜索代碼查找
Model.find(:all, :conditions => "name LIKE params[search]")
但我想在搜索找到的所有記錄,其中「名LIKE PARAMS [搜索]或描述LIKE PARAMS [搜索]。
有什麼辦法到或添加到狀態中軌
,或者我應該做的if語句
我試圖找到它作爲兩個條件的結果查詢的模型的結果。Rails - 查找兩個模型字段的條件
我有一個搜索代碼查找
Model.find(:all, :conditions => "name LIKE params[search]")
但我想在搜索找到的所有記錄,其中「名LIKE PARAMS [搜索]或描述LIKE PARAMS [搜索]。
有什麼辦法到或添加到狀態中軌
,或者我應該做的if語句
對於您可以使用此查詢,這是不容易受到SQL注入式攻擊Rails的2.X:
Model.all(:conditions => ["name LIKE ? OR description LIKE ?",
"%#{params[:search]}%", "%#{params[:search]}%"])
Model.find(?:?所有,:條件=>「名稱LIKE「%#{PARAMS [:SE ]%'或描述'%#{params [:search]}%'「)
這可能適合你。
在Rails 2.3(使用參數,而不是純粹的SQL代碼與注射的幫助)
Model.all(:conditions=>['name LIKE ? OR name like ?','%'[email protected]_one+'%', '%'[email protected]_two+'%'])
我也很喜歡在Rails 2.x的項目中使用Condition Builder for ActiveRecord,因爲你可以這樣做:
Condition.block{|c|
c.and :published, true
c.and {|d|
d.or :full_text, "LIKE", "%#{options[:qs]}%"
d.or :full_text, "LIKE", "%#{options[:qs]}%"
}
end
注意:Postgres用戶應該使用ILIKE(不區分大小寫)而不是LIKE。注意2:Rails 3.0將使用where子句鏈接,這很酷,並且應該很快添加一個OR操作符ActiveRelation GitHub - 但它看起來像User.where(:name =>'bob') 。或(:名稱=> '同')
直接使用搜索參數會使查詢容易受到SQL注入攻擊。 – 2010-06-15 16:48:59
有沒有辦法做到沒有這個漏洞? – ChrisWesAllen 2010-06-15 17:16:42