0

コロン「:」を含む値を持つモデルで SQL クエリを実行しようとしています。

何かのようなもの:

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

これにより、次のエラーが発生します。

ActiveRecord::PreparedStatementInvalid

上記のフィールド2の値テキストのコロン「:」を適切にエスケープする方法を知っている人はいますか?

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!(':','\\:\\')on 値が機能するはずです。

于 2012-04-23T17:41:47.233 に答える