From bec99d69ed2c1377956aef72a4af08cb93c97076 Mon Sep 17 00:00:00 2001 From: Tomas Celizna Date: Fri, 11 Dec 2015 20:10:22 +0100 Subject: [PATCH 1/8] Update enum.rb --- lib/mongoid/enum.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index 20dc37e..7cf7b0e 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -76,7 +76,7 @@ def define_array_field_accessor(name, field_name) def define_string_field_accessor(name, field_name) class_eval "def #{name}=(val) self.write_attribute(:#{field_name}, val && val.to_sym || nil) end" - class_eval "def #{name}() self.read_attribute(:#{field_name}) end" + class_eval "def #{name}() self.read_attribute(:#{field_name}).try(:to_sym) end" end def define_array_accessor(field_name, value) From 12ed93edd39bac02706244256376521829f1edc0 Mon Sep 17 00:00:00 2001 From: Tomas Celizna Date: Fri, 11 Dec 2015 21:10:27 +0100 Subject: [PATCH 2/8] array accessor converts to_sym as well --- lib/mongoid/enum.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index 7cf7b0e..1bab6fe 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -71,7 +71,7 @@ def define_field_accessor(name, field_name, options) def define_array_field_accessor(name, field_name) class_eval "def #{name}=(vals) self.write_attribute(:#{field_name}, Array(vals).compact.map(&:to_sym)) end" - class_eval "def #{name}() self.read_attribute(:#{field_name}) end" + class_eval "def #{name}() self.read_attribute(:#{field_name}).map{ |i| i.try(:to_sym) } end" end def define_string_field_accessor(name, field_name) From de50b88cd467c9ba35de5752a6bceff29b4678ac Mon Sep 17 00:00:00 2001 From: Tomas Celizna Date: Wed, 16 Dec 2015 21:07:49 +0100 Subject: [PATCH 3/8] use send rather than read_attribute --- lib/mongoid/enum.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index 1bab6fe..7f0b655 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -71,12 +71,12 @@ def define_field_accessor(name, field_name, options) def define_array_field_accessor(name, field_name) class_eval "def #{name}=(vals) self.write_attribute(:#{field_name}, Array(vals).compact.map(&:to_sym)) end" - class_eval "def #{name}() self.read_attribute(:#{field_name}).map{ |i| i.try(:to_sym) } end" + class_eval "def #{name}() self.send(:#{field_name}).map{ |i| i.try(:to_sym) } end" end def define_string_field_accessor(name, field_name) class_eval "def #{name}=(val) self.write_attribute(:#{field_name}, val && val.to_sym || nil) end" - class_eval "def #{name}() self.read_attribute(:#{field_name}).try(:to_sym) end" + class_eval "def #{name}() self.send(:#{field_name}) end" end def define_array_accessor(field_name, value) From 0db167f403ba187be7d531a081aa7a14e0c9bceb Mon Sep 17 00:00:00 2001 From: Tomas Celizna Date: Sun, 14 Feb 2016 19:34:17 +0100 Subject: [PATCH 4/8] fix travis --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 429adb4..f2a6215 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ script: "bundle exec rspec spec" - +sudo: false language: ruby - rvm: - 1.9.3 - 2.0.0 @@ -9,6 +8,5 @@ rvm: - 2.1.1 - 2.1.2 - jruby-19mode - services: - mongodb From cfb12c314691e9d0927a100833405c7f8b008146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Celizna?= Date: Wed, 24 Feb 2016 14:25:09 +0100 Subject: [PATCH 5/8] Update enum.rb --- lib/mongoid/enum.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index 7f0b655..d894918 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -43,8 +43,7 @@ def create_field(field_name, options) def create_validations(field_name, values, options) if options[:multiple] && options[:validate] validates field_name, :'mongoid/enum/validators/multiple' => { :in => values.map(&:to_sym), :allow_nil => !options[:required] } - #FIXME: Shouldn't this be `elsif options[:validate]` ??? - elsif validate + elsif options[:validate] validates field_name, :inclusion => {:in => values.map(&:to_sym)}, :allow_nil => !options[:required] end end From 4368a481b1a25f693918ea32f907e00f2d4a3659 Mon Sep 17 00:00:00 2001 From: Asger Behncke Jacobsen Date: Wed, 24 Feb 2016 16:14:16 +0100 Subject: [PATCH 6/8] Validations * Refer to constant instead of passing around the values --- lib/mongoid/enum.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index d894918..f9e41ac 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -15,7 +15,7 @@ def enum(name, values, options = {}) create_field field_name, options - create_validations field_name, values, options + create_validations name, field_name, options define_value_scopes_and_accessors field_name, values, options define_field_accessor name, field_name, options end @@ -40,11 +40,11 @@ def create_field(field_name, options) field field_name, :type => type, :default => options[:default] end - def create_validations(field_name, values, options) + def create_validations(name, field_name, options) if options[:multiple] && options[:validate] - validates field_name, :'mongoid/enum/validators/multiple' => { :in => values.map(&:to_sym), :allow_nil => !options[:required] } + validates field_name, :'mongoid/enum/validators/multiple' => { :in => self.const_get(name.to_s.upcase), :allow_nil => !options[:required] } elsif options[:validate] - validates field_name, :inclusion => {:in => values.map(&:to_sym)}, :allow_nil => !options[:required] + validates field_name, :inclusion => {:in => self.const_get(name.to_s.upcase)}, :allow_nil => !options[:required] end end From d2f3b9fc043169396d0b68b2e741700855debdc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Celizna?= Date: Sat, 12 Mar 2016 10:54:26 +0100 Subject: [PATCH 7/8] Relax Mongoid dependency --- mongoid-enum.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mongoid-enum.gemspec b/mongoid-enum.gemspec index bd9465d..dbc7e68 100644 --- a/mongoid-enum.gemspec +++ b/mongoid-enum.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_runtime_dependency "mongoid", "~> 5.0" + spec.add_runtime_dependency "mongoid", "~> 5" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" From 5f1dc6a5d669505655838f8e4744fd7e6ac8bbac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Celizna?= Date: Wed, 27 Jul 2016 20:42:55 +0200 Subject: [PATCH 8/8] Update mongoid-enum.gemspec --- mongoid-enum.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mongoid-enum.gemspec b/mongoid-enum.gemspec index dbc7e68..725680e 100644 --- a/mongoid-enum.gemspec +++ b/mongoid-enum.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_runtime_dependency "mongoid", "~> 5" + spec.add_runtime_dependency "mongoid" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake"