0

我正在尝试在一个模型上运行一个 SQL 查询,该模型的值包含一个冒号“:”。

就像是:

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

这会导致以下错误:

ActiveRecord::PreparedStatementInvalid

任何人都知道如何正确地将值文本中的冒号“:”转义到上面的 field2?

4

2 回答 2

4

使用where,它会使代码更短:

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">] 
于 2012-04-23T18:10:13.937 回答
1

gsub!(':','\\:\\')价值应该工作。

于 2012-04-23T17:41:47.233 回答