Commit cc2a694927b8a2622da4a733ffdac54c044436f7

Authored by Andrew Kane
1 parent eb356914

Added ability to perform where nil queries

lib/searchkick/model.rb
... ... @@ -53,7 +53,7 @@ module Searchkick
53 53  
54 54 # hack to prevent generator field doesn't exist error
55 55 (options[:suggest] || []).map(&:to_s).each do |field|
56   - source[field] = "a" if !source[field]
  56 + source[field] = nil if !source[field]
57 57 end
58 58  
59 59 # locations
... ...
lib/searchkick/search.rb
... ... @@ -218,7 +218,11 @@ module Searchkick
218 218 end
219 219 end
220 220 else
221   - filters << {term: {field => value}}
  221 + if value.nil?
  222 + filters << {missing: {"field" => field, existence: true, null_value: true}}
  223 + else
  224 + filters << {term: {field => value}}
  225 + end
222 226 end
223 227 end
224 228 end
... ...
test/sql_test.rb
... ... @@ -75,6 +75,14 @@ class TestSql &lt; Minitest::Unit::TestCase
75 75 assert_search "product", ["Product A"], where: {color: ["RED"]}
76 76 end
77 77  
  78 + def test_where_nil
  79 + store [
  80 + {name: "Product A"},
  81 + {name: "Product B", color: "red"}
  82 + ]
  83 + assert_search "product", ["Product A"], where: {color: nil}
  84 + end
  85 +
78 86 def test_near
79 87 store [
80 88 {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
... ...