diff --git a/Gemfile.lock b/Gemfile.lock index e96d8d1..d4174c8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - mongoid_enumerable (0.2.1) + mongoid_enumerable (0.2.2) mongoid (>= 4.0) GEM diff --git a/lib/mongoid_enumerable.rb b/lib/mongoid_enumerable.rb index 0c418f6..c293980 100644 --- a/lib/mongoid_enumerable.rb +++ b/lib/mongoid_enumerable.rb @@ -23,9 +23,7 @@ def self.included(base) send(field_name) == value end - base.define_singleton_method(method_name) do - base.where(field_name => value) - end + scope value, -> { where(field_name => value) } end base.define_singleton_method("all_#{field_name}") do diff --git a/lib/mongoid_enumerable/version.rb b/lib/mongoid_enumerable/version.rb index 27475b8..d6e1f0d 100644 --- a/lib/mongoid_enumerable/version.rb +++ b/lib/mongoid_enumerable/version.rb @@ -1,3 +1,3 @@ module MongoidEnumerable - VERSION = "0.2.1" + VERSION = '0.2.2' end diff --git a/spec/mongoid_enumerable_spec.rb b/spec/mongoid_enumerable_spec.rb index 1cf37cc..14dfd59 100644 --- a/spec/mongoid_enumerable_spec.rb +++ b/spec/mongoid_enumerable_spec.rb @@ -169,5 +169,19 @@ it { expect(another_klass).to_not respond_to(:st_completed)} end + + context 'when declared for a superclass' do + class SuperClass + include MongoidEnumerable + include Mongoid::Document + enumerable :status, %i(completed running failed waiting) + end + + class SubClass < SuperClass; end + + it 'preserves subclass in mongoid criterias' do + expect(SubClass.completed.klass).to equal(SubClass) + end + end end end