我正在尝试在一个模型上运行一个 SQL 查询,该模型的值包含一个冒号“:”。
就像是:
Model.find_by_sql([SELECT * FROM table WHERE field1 = ? AND field2 ='some:value'], params)
这会导致以下错误:
ActiveRecord::PreparedStatementInvalid
任何人都知道如何正确地将值文本中的冒号“:”转义到上面的 field2?
我正在尝试在一个模型上运行一个 SQL 查询,该模型的值包含一个冒号“:”。
就像是:
Model.find_by_sql([SELECT * FROM table WHERE field1 = ? AND field2 ='some:value'], params)
这会导致以下错误:
ActiveRecord::PreparedStatementInvalid
任何人都知道如何正确地将值文本中的冒号“:”转义到上面的 field2?
使用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">]
gsub!(':','\\:\\')
价值应该工作。