diff --git a/CHANGELOG.md b/CHANGELOG.md index 53725af..9beb577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.2 (unreleased) + +- Fixed `like` queries with `"` character + ## 4.2.1 (2020-01-27) - Fixed deprecation warnings with Elasticsearch diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 5f9d779..c34951f 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -953,7 +953,14 @@ module Searchkick # % matches zero or more characters # _ matches one character # \ is escape character - regex = Regexp.escape(op_value).gsub(/(? {value: regex}}} when :prefix filters << {prefix: {field => op_value}} diff --git a/test/where_test.rb b/test/where_test.rb index 1a02796..82f240d 100644 --- a/test/where_test.rb +++ b/test/where_test.rb @@ -161,6 +161,13 @@ class WhereTest < Minitest::Test assert_search "product", ["Product 100%"], where: {name: {like: "% 100\\%"}} end + def test_like_special_characters + store_names ["Product ABC\"", "Product B"] + like = "%ABC\"" + assert_equal 1, Product.where("name LIKE ?", like).count + assert_search "product", ["Product ABC\""], where: {name: {like: like}} + end + # def test_script # store [ # {name: "Product A", store_id: 1}, -- libgit2 0.21.0