我有条件传递给发现者。问题是我不想以一种安全的方式传递。所以想象一下,我收到一个哈希:
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)
答案 0 :(得分:4)
你可以这样写:
Model.find(:all,:conditions=>["created > :start_date and created < :end_date", {:start_date => params[:one], :end_date => params[:two]}])
它将被正确转义。
答案 1 :(得分:1)
Active Record支持使用问号转义条件:
Model.all(:conditions => ['created > ? and created < ?',
:start_date, :end_date])
您可能感兴趣的Rails指南中的更多信息: