From fde35639d89721b373dbad785d2badbb773f6559 Mon Sep 17 00:00:00 2001 From: Nicholas Bruning Date: Mon, 17 Mar 2014 23:44:40 +1100 Subject: [PATCH] Refactored accessor definition into methods --- lib/mongoid/enum.rb | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index e58b002..f71c671 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -51,15 +51,21 @@ module Mongoid values.each do |value| scope value, where(field_name => value) - if options[:multiple] - class_eval "def #{value}?() self.#{field_name}.include?(:#{value}) end" - class_eval "def #{value}!() update_attributes! :#{field_name} => (self.#{field_name} || []) + [:#{value}] end" - else - class_eval "def #{value}?() self.#{field_name} == :#{value} end" - class_eval "def #{value}!() update_attributes! :#{field_name} => :#{value} end" - end + options[:multiple] && + define_array_accessor(field_name, value) || + define_string_accessor(field_name, value) end end + + def define_array_accessor(field_name, value) + class_eval "def #{value}?() self.#{field_name}.include?(:#{value}) end" + class_eval "def #{value}!() update_attributes! :#{field_name} => (self.#{field_name} || []) + [:#{value}] end" + end + + def define_string_accessor(field_name, value) + class_eval "def #{value}?() self.#{field_name} == :#{value} end" + class_eval "def #{value}!() update_attributes! :#{field_name} => :#{value} end" + end end end end