2012-04-23 2 views
0

Я пытаюсь запустить SQL-запрос на модели со значением, в котором есть двоеточие ':'.Rails find by sql escape символ двоеточия

Что-то вроде:

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

Это приводит следующее сообщение об ошибке:

ActiveRecord::PreparedStatementInvalid

Любой знает, как правильно бежать двоеточие ':' в тексте значение для FIELD2 выше?

ответ

1

gsub!(':','\\:\\') по значению должно работать.

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">] 
Смежные вопросы