diff --git a/Gemfile b/Gemfile index 8552f4d..982eb5a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source 'https://rubygems.org' gem 'rake' -gem 'mongoid', '~> 7' +gem 'mongoid', '~> 9' group :test do gem 'rspec', '~> 2' gem 'rdoc' - gem 'database_cleaner' + gem 'database_cleaner-mongoid' end diff --git a/lib/mongoid/taggable.rb b/lib/mongoid/taggable.rb index 31c583a..a2a224a 100644 --- a/lib/mongoid/taggable.rb +++ b/lib/mongoid/taggable.rb @@ -22,7 +22,9 @@ module Mongoid::Taggable # add callback to save tags index after_save do |document| - document.class.save_tags_index! if document.tags_array_changed? + # Use previously_changed? as Mongoid 8.x+ updates attributes before after_save so changed? returns false here + # see: https://www.mongodb.com/docs/mongoid/8.1/release-notes/mongoid-8.0/#changeable-module-behavior-made-compatible-with-activemodel--dirty + document.class.save_tags_index! if document.tags_array_previously_changed? end # enable indexing as default diff --git a/mongoid_taggable.gemspec b/mongoid_taggable.gemspec index a7335e0..6cbb026 100644 --- a/mongoid_taggable.gemspec +++ b/mongoid_taggable.gemspec @@ -19,5 +19,5 @@ Gem::Specification.new do |g| g.require_paths = ['lib'] g.add_runtime_dependency 'rake', '>= 0' - g.add_runtime_dependency 'mongoid', '~> 7' + g.add_runtime_dependency 'mongoid', '~> 9' end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 835eeae..0e7590c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,14 +1,14 @@ $: << File.expand_path("../../lib", __FILE__) -require 'database_cleaner' +require 'database_cleaner-mongoid' RSpec.configure do |config| config.before(:suite) do - DatabaseCleaner.strategy = :truncation + DatabaseCleaner[:mongoid].strategy = :deletion end config.after(:each) do - DatabaseCleaner.clean + DatabaseCleaner[:mongoid].clean end end @@ -16,4 +16,3 @@ require 'mongoid_taggable' Mongoid.load!("spec/mongoid.yml", :test) -