Commit fe5931dd3f8994a6bf62c4f0e67f186e4ff93e60

Authored by Andrew Kane
1 parent 14fee2c9

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},