代码之家  ›  专栏  ›  技术社区  ›  VP.

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

  •  1
  • VP.  · 技术社区  · 16 年前

    我有一些条件要传递给查找者。问题是我不想以一种惯用的方式通过。所以假设我收到一个哈希:

    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)
    
    2 回复  |  直到 16 年前
        1
  •  4
  •   Tomas Markauskas    16 年前

    你可以这样写:

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

    它将被正确地逃脱。

        2
  •  1
  •   John Topley    16 年前

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

    Model.all(:conditions => ['created > ? and created < ?',
              :start_date, :end_date])
    

    轨道指南中您可能感兴趣的更多信息:

    推荐文章