1. ホーム
  2. sql

[解決済み] Rails 4のLIKEクエリ - ActiveRecordは引用符を追加します。

2022-02-19 13:23:37

質問

私は以下のようなクエリを実行しようとしています。

def self.search(search, page = 1 )
  paginate :per_page => 5, :page => page,
    :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search],   order => 'name'
end

しかし、これを実行すると、何かが引用符を追加し、SQL文は次のようになります。

SELECT COUNT(*)
FROM "schools" 
WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')):

それで、私の問題を見ることができます。 私はRails 4とPostgres 9を使用していますが、どちらも使ったことがないので、activerecordの問題なのか、それともpostgresの問題なのかは分かりません。

どのように設定すればよいのでしょうか? '%my_search%' を最後のクエリに追加してください。

どのように解決するのですか?

プレースホルダーが文字列に置き換わっているのですが、その処理が間違っています。

置き換える

"name LIKE '%?%' OR postal_code LIKE '%?%'", search, search

"name LIKE ? OR postal_code LIKE ?", "%#{search}%", "%#{search}%"