我想在我的SQL请求中使用LIKE
。我构建了这样的东西:
streets = Street.where("name LIKE ?", "%#{params[:name]}%")
作为Rails指南中的mentioned。而且我认为这完全没问题。但是我遇到了以下麻烦:
如果我的用户在params[:name]
中加上括号,我会发现错误。 params[:name] = '('
的示例:
Street Load (3.5ms) SELECT `streets`.* FROM `streets` WHERE (name LIKE '%(%')
Completed 500 Internal Server Error in 18ms
RegexpError (end pattern with unmatched parenthesis: /(/):
如果我在params[:name]
中使用斜杠,我会发现错误。 params[:name] = "a\\p"
的示例:
invalid multibyte character
我期望数组样式的请求可以转义所有特殊字符,但它没有!
我该如何正确逃避LIKE
请求?
我正在使用Rails 3.2和ruby 1.9.3
P.S。我在2个月前发现了commit。所以Rails开发人员刚开始解决这个问题......所以它似乎只是外部解决方案(如某些宝石或一些黑客攻击)