Ruby on rails 活动记录以字符串形式查找条件

Ruby on rails 活动记录以字符串形式查找条件,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一些条件要传递给寻找者。问题是我不想以安全的方式通过考试。假设我收到一个散列: hash = {:start_date=>'2009-11-01',:end_date=>'2010-01-23'} 我想将其传递给我的查找者,如: Model.find(:all,:conditions=>"created > '#{start_date}' and created < '#{end_date}'") 问题是它不安全,而且我面临SQL注入问题。我的问题是,怎样才

我有一些条件要传递给寻找者。问题是我不想以安全的方式通过考试。假设我收到一个散列:

hash = {:start_date=>'2009-11-01',:end_date=>'2010-01-23'}
我想将其传递给我的查找者,如:

Model.find(:all,:conditions=>"created > '#{start_date}' and created < '#{end_date}'")
问题是它不安全,而且我面临SQL注入问题。我的问题是,怎样才能最好地满足这种条件

我想动态地做。例如,我今天做的是:

find_condition = ['created > ? and created < ?','2009-10-01','2010-01-01']
Model.find(:all,:conditions=>find_condition)

你可以这样写:

Model.find(:all,:conditions=>["created > :start_date and created < :end_date", {:start_date => params[:one], :end_date => params[:two]}])

它将被正确转义。

您可以这样写:

Model.find(:all,:conditions=>["created > :start_date and created < :end_date", {:start_date => params[:one], :end_date => params[:two]}])

它将被正确转义。

活动记录支持使用问号转义条件:

Model.all(:conditions => ['created > ? and created < ?',
          :start_date, :end_date])
Rails指南中您可能感兴趣的一些进一步信息:


活动记录支持使用问号转义条件:

Model.all(:conditions => ['created > ? and created < ?',
          :start_date, :end_date])
Rails指南中您可能感兴趣的一些进一步信息:


@我认为这实际上应该是模型。all:conditions=>['created>?和created<?',:start\u date,:end\u date]。i、 e.条件不也属于[]吗?我相信你的意思是开始日期,结束日期,而不是:开始日期,:结束日期冒号outInteresting-这怎么可能?“?”不是分别被文本“开始日期”和“结束日期”替换吗?@JohnTopley我认为这实际上应该是模型。all:conditions=>[“created>”和created<?”,:start\u date,:end\u date]。i、 e.条件不也属于[]吗?我相信你的意思是开始日期,结束日期,而不是:开始日期,:结束日期冒号outInteresting-这怎么可能?“开始日期”和“结束日期”这两个字会不会分别代替“?”呢?