通过 sql 转义冒号字符查找的轨道



我正在尝试对值中包含冒号":"的模型运行SQL查询。

像这样:

Model.find_by_sql([SELECT * FROM table WHERE field1 = ? AND field2 ='some:value'], params)

这会导致以下错误:

活动记录::P已修复语句无效

有人知道如何正确转义上面的字段 2 的值文本中的冒号":"吗?

在哪里使用,会使代码更短:

Model.where("field1 = ? AND field2 ='some:value']", params)

具体例子:

1.9.3-head :024 > Tag.where('created_at <= ? and name = "some:value"', Time.now)
  Tag Load (1.6ms)  SELECT "tags".* FROM "tags" WHERE (created_at <= '2012-04-23 18:06:54.967319' and name = "some:value")
 => [#<Tag id: 2419, name: "some:value", created_at: "2012-04-23 18:06:35", updated_at: "2012-04-23 18:06:35">] 

gsub!(':','\:\')应该可以工作。

最新更新