8

Rails 2.3.14 アプリの MYSQL データベースを検索する場合、単一引用符 (アポストロフィ) を含む文字列を検索できるように、検索文字列を適切にエスケープする必要があります。これを行う最善の方法は何ですか?それが重要な場合に備えて、私はmysql宝石を使用しています。

4

3 に答える 3

10

Railsは文字列を次のように引用します。

# Quotes a string, escaping any ' (single quote) and \ (backslash) characters.
def quote_string(s)
  s.gsub(/\\/, '\&\&').gsub(/'/, "''") # ' (for ruby-mode)
end
于 2013-08-07T18:14:04.887 に答える
8

mysqlgemを使用すると、 method が得られますMysql.escape_string()。次のように使用します。

search_terms = Mysql.escape_string("it's working!")
conditions = [ "table1.name LIKE '%#{search_terms}%'" ]
# use conditions for MYSQL query as appropriate
于 2012-07-20T14:53:53.813 に答える
6

ActiveRecordのquoteメソッド(例ActiveRecord::Base.connection.quote("string with ' apostrophe"))を使用できますが、ActiveRecordのクエリメソッドはすでにSQLをエスケープしています。例えば:

a = "string with ' apostrophe"
ModelName.where("field1 = ?", a)

「stringwith'apostrophe」を「stringwith''apostrophe」に変更します

于 2012-07-21T05:29:17.183 に答える