From d1bafaaa9641a476aa708673734c6c8163fd4d5f Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 17 Jul 2013 01:54:34 -0700 Subject: [PATCH] Better or --- README.md | 5 ++--- lib/searchkick/search.rb | 4 +++- test/searchkick_test.rb | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f4d4b49..9467daf 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,8 @@ where: { store_id: {not: 2}, # not aisle_id: {not: [25, 30]}, # not in or: [ - {in_stock: true}, - {backordered: true} - ] # TODO better or + [{in_stock: true}, {backordered: true}] + ] } ``` diff --git a/lib/searchkick/search.rb b/lib/searchkick/search.rb index 132be2d..d728d60 100644 --- a/lib/searchkick/search.rb +++ b/lib/searchkick/search.rb @@ -55,7 +55,9 @@ module Searchkick # where (options[:where] || {}).each do |k, v| if k == :or - filter :or, v.map{|v2| {term: v2} } + v.each do |v2| + filter :or, v2.map{|v3| {term: v3} } + end else if v.is_a?(Range) v = {gte: v.first, (v.exclude_end? ? :lt : :lte) => v.last} diff --git a/test/searchkick_test.rb b/test/searchkick_test.rb index fcd986a..54a10f2 100644 --- a/test/searchkick_test.rb +++ b/test/searchkick_test.rb @@ -238,7 +238,7 @@ class TestSearchkick < Minitest::Unit::TestCase assert_search "product", ["Product A", "Product B"], where: {store_id: [1, 2]} assert_search "product", ["Product B", "Product C", "Product D"], where: {store_id: {not: 1}} assert_search "product", ["Product C", "Product D"], where: {store_id: {not: [1, 2]}} - assert_search "product", ["Product A", "Product B", "Product C"], where: {or: [{in_stock: true}, {store_id: 3}]} + assert_search "product", ["Product A", "Product B", "Product C"], where: {or: [[{in_stock: true}, {store_id: 3}]]} end def test_order -- libgit2 0.21.0