2011-12-29 55 views
1

想建立鐵軌有效的記錄查詢與多個可選的條件。Rails 3加入多個條件的情況下

例子:

我有一個病人的搜索形式能夠通過ID,姓名和電子郵件地址進行搜索。僞代碼如下:

where_sql = "" 
where_sql = {'name = ?", params[:name]} if params[:name] 
where_sql = {'id = ?", params[:id]} if params[:id] 
where_sql = {'email = ?", params[:email]} if params[:email] 

Patient.where(where_sql) 

如何構建以下查詢而不用擔心sql注入。

+0

檢查http://stackoverflow.com/questions/6419472/creating-dynamic-queries-depending -on-parameter-passed-in-rails-3/6421870#6421870線索 – Bohdan 2011-12-29 15:25:04

回答

0

如果你只使用相等的條件下,你可以不喜歡它:

conditions = {} 
conditions[:name] = params[:name] if params[:name] 
conditions[:id] = params[:id] if params[:id] 
conditions[:email] = params[:email] if params[:email] 
Patient.where(conditions) 

而且,看看一個偉大的searchlogic寶石。

+0

感謝您的回覆。但是,我並沒有在相同的條件下使用它。 – TonyTakeshi 2012-01-01 10:09:30