2011-12-29 57 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