diff --git a/lib/searchkick/search.rb b/lib/searchkick/search.rb index aa90ffc..ef2026d 100644 --- a/lib/searchkick/search.rb +++ b/lib/searchkick/search.rb @@ -185,7 +185,11 @@ module Searchkick term_filters = proc do |field, value| if value.is_a?(Array) # in query - {or: value.map{|v| term_filters.call(field, v) }} + if value.any? + {or: value.map{|v| term_filters.call(field, v) }} + else + {terms: {field => value}} # match nothing + end elsif value.nil? {missing: {"field" => field, existence: true, null_value: true}} else diff --git a/test/sql_test.rb b/test/sql_test.rb index b9e6565..03584c9 100644 --- a/test/sql_test.rb +++ b/test/sql_test.rb @@ -95,6 +95,16 @@ class TestSql < Minitest::Unit::TestCase assert_search "product", ["Product A"], where: {id: product.id.to_s} end + def test_where_empty + store_names ["Product A"] + assert_search "product", ["Product A"], where: {} + end + + def test_where_empty_array + store_names ["Product A"] + assert_search "product", [], where: {store_id: []} + end + def test_near store [ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167}, -- libgit2 0.21.0