From 09f1268ff2901dbe17e0c789d94c886b2dc33d15 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 19 Feb 2022 17:37:00 -0800 Subject: [PATCH] Added models option to similar method [skip ci] --- CHANGELOG.md | 1 + lib/searchkick/index.rb | 4 ++-- test/inheritance_test.rb | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33e3904..d524e4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - Searches now use lazy loading (similar to Active Record) - Added support for `:async` and `:queue` modes for `reindex` on relation - Added basic protection from unfiltered parameters to `where` option +- Added `models` option to `similar` method - Anchor regular expressions by default - Raise error when `search` called on relations - Raise `ArgumentError` (instead of warning) for invalid regular expression modifiers diff --git a/lib/searchkick/index.rb b/lib/searchkick/index.rb index 1869569..36a2b9c 100644 --- a/lib/searchkick/index.rb +++ b/lib/searchkick/index.rb @@ -169,9 +169,9 @@ module Searchkick def similar_record(record, **options) options[:per_page] ||= 10 options[:similar] = [RecordData.new(self, record).record_data] + options[:models] ||= [record.class] unless options.key?(:model) - # TODO use index class instead of record class - Searchkick.search("*", model: record.class, **options) + Searchkick.search("*", **options) end def reload_synonyms diff --git a/test/inheritance_test.rb b/test/inheritance_test.rb index 579a570..630e85d 100644 --- a/test/inheritance_test.rb +++ b/test/inheritance_test.rb @@ -115,4 +115,14 @@ class InheritanceTest < Minitest::Test end assert_includes error.message, "Unknown model" end + + def test_similar + store_names ["Dog", "Other dog"], Dog + store_names ["Not dog"], Cat + + dog = Dog.find_by!(name: "Dog") + assert_equal ["Other dog"], dog.similar(fields: [:name]).map(&:name) + assert_equal ["Not dog", "Other dog"], dog.similar(fields: [:name], models: [Animal]).map(&:name).sort + assert_equal ["Not dog"], dog.similar(fields: [:name], models: [Cat]).map(&:name).sort + end end -- libgit2 0.21.0