From bc11e4139245d0e95f040d40d9bd157edcc196fd Mon Sep 17 00:00:00 2001 From: Carlos Eduardo L. Lopes Date: Fri, 7 Feb 2014 15:57:10 -0200 Subject: [PATCH] Add option to force search types --- lib/searchkick/search.rb | 8 +++++++- test/inheritance_test.rb | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/searchkick/search.rb b/lib/searchkick/search.rb index 5dc4e53..da5ea18 100644 --- a/lib/searchkick/search.rb +++ b/lib/searchkick/search.rb @@ -350,7 +350,7 @@ module Searchkick payload[:fields] = [] if load tire_options = {load: load, payload: payload, size: per_page, from: offset} - tire_options[:type] = document_type if self != searchkick_klass + tire_options[:type] = handle_types(options[:types]) search = Tire::Search::Search.new(index_name, tire_options) begin response = search.json @@ -377,5 +377,11 @@ module Searchkick Searchkick::Results.new(response, search.options.merge(term: term)) end + private + def handle_types(types) + return types.map(&:document_type) if types + document_type if self != searchkick_klass + end + end end diff --git a/test/inheritance_test.rb b/test/inheritance_test.rb index 5043e08..3706f4f 100644 --- a/test/inheritance_test.rb +++ b/test/inheritance_test.rb @@ -25,6 +25,18 @@ class TestInheritance < Minitest::Unit::TestCase assert_equal 2, Animal.search("bear").size end + def test_force_one_type + store_names ["Green Bear"], Dog + store_names ["Blue Bear"], Cat + assert_equal ["Blue Bear"], Animal.search("bear", types: [Cat]).map(&:name) + end + + def test_force_multiple_types + store_names ["Green Bear"], Dog + store_names ["Blue Bear"], Cat + assert_equal ["Green Bear", "Blue Bear"], Animal.search("bear", types: [Dog, Cat]).map(&:name) + end + def test_child_autocomplete store_names ["Max"], Cat store_names ["Mark"], Dog -- libgit2 0.21.0