Skip to content

Commit c548f24

Browse files
committed
Add basic MongoDB test
1 parent ac2daa6 commit c548f24

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

lib/meilisearch-rails.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,8 @@ def meilisearch(options = {}, &block)
476476
super(*args)
477477
end
478478
end
479-
elsif respond_to?(:after_destroy)
479+
# Currently after_destroy_commit is broken in Mongoid
480+
elsif respond_to?(:after_destroy) && !Utilities.mongo_model?(self)
480481
after_destroy_commit { |searchable| searchable.ms_enqueue_remove_from_index!(ms_synchronous?) }
481482
end
482483
end
@@ -690,6 +691,8 @@ def ms_search(query, params = {})
690691
# respond with a valid database column. The blocks below prevent that from happening.
691692
has_virtual_column_as_pk = if defined?(::Sequel::Model) && self < Sequel::Model
692693
meilisearch_options[:type].columns.map(&:to_s).exclude?(condition_key.to_s)
694+
elsif Utilities.mongo_model?(self)
695+
fields.keys.exclude?(condition_key.to_s)
693696
else
694697
meilisearch_options[:type].columns.map(&:name).map(&:to_s).exclude?(condition_key.to_s)
695698
end
@@ -778,7 +781,7 @@ def ms_must_reindex?(document)
778781

779782
def ms_primary_key_method(options = nil)
780783
options ||= meilisearch_options
781-
options[:primary_key] || options[:id] || :id
784+
options[:primary_key] || options[:id] || (Utilities.mongo_model?(self) ? :_id : :id)
782785
end
783786

784787
protected
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require 'support/mongo_models/citizen'
2+
3+
describe 'MongoDB record is created' do
4+
it 'is added to meilisearch' do
5+
john_wick = Citizen.create(name: 'John Wick', age: 40)
6+
7+
AsyncHelper.await_last_task
8+
9+
expect(Citizen.search('John')).to eq([john_wick])
10+
end
11+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Citizen
2+
include Mongoid::Document
3+
include Mongoid::Timestamps
4+
5+
field :name, type: String
6+
field :age, type: Integer
7+
8+
include MeiliSearch::Rails
9+
10+
meilisearch index_uid: safe_index_uid('Citizen')
11+
end

0 commit comments

Comments
 (0)