Commit fe5931dd3f8994a6bf62c4f0e67f186e4ff93e60
1 parent
14fee2c9
Exists in
master
and in
21 other branches
Fixed empty array in where clause - closes #113
Showing
2 changed files
with
15 additions
and
1 deletions
Show diff stats
lib/searchkick/search.rb
@@ -185,7 +185,11 @@ module Searchkick | @@ -185,7 +185,11 @@ module Searchkick | ||
185 | term_filters = | 185 | term_filters = |
186 | proc do |field, value| | 186 | proc do |field, value| |
187 | if value.is_a?(Array) # in query | 187 | if value.is_a?(Array) # in query |
188 | - {or: value.map{|v| term_filters.call(field, v) }} | 188 | + if value.any? |
189 | + {or: value.map{|v| term_filters.call(field, v) }} | ||
190 | + else | ||
191 | + {terms: {field => value}} # match nothing | ||
192 | + end | ||
189 | elsif value.nil? | 193 | elsif value.nil? |
190 | {missing: {"field" => field, existence: true, null_value: true}} | 194 | {missing: {"field" => field, existence: true, null_value: true}} |
191 | else | 195 | else |
test/sql_test.rb
@@ -95,6 +95,16 @@ class TestSql < Minitest::Unit::TestCase | @@ -95,6 +95,16 @@ class TestSql < Minitest::Unit::TestCase | ||
95 | assert_search "product", ["Product A"], where: {id: product.id.to_s} | 95 | assert_search "product", ["Product A"], where: {id: product.id.to_s} |
96 | end | 96 | end |
97 | 97 | ||
98 | + def test_where_empty | ||
99 | + store_names ["Product A"] | ||
100 | + assert_search "product", ["Product A"], where: {} | ||
101 | + end | ||
102 | + | ||
103 | + def test_where_empty_array | ||
104 | + store_names ["Product A"] | ||
105 | + assert_search "product", [], where: {store_id: []} | ||
106 | + end | ||
107 | + | ||
98 | def test_near | 108 | def test_near |
99 | store [ | 109 | store [ |
100 | {name: "San Francisco", latitude: 37.7833, longitude: -122.4167}, | 110 | {name: "San Francisco", latitude: 37.7833, longitude: -122.4167}, |