Refactored accessor definition into methods

This commit is contained in:
Nicholas Bruning 2014-03-17 23:44:40 +11:00
parent d4280d3eca
commit fde35639d8

View File

@ -51,15 +51,21 @@ module Mongoid
values.each do |value| values.each do |value|
scope value, where(field_name => value) scope value, where(field_name => value)
if options[:multiple] 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}?() self.#{field_name}.include?(:#{value}) end"
class_eval "def #{value}!() update_attributes! :#{field_name} => (self.#{field_name} || []) + [:#{value}] end" class_eval "def #{value}!() update_attributes! :#{field_name} => (self.#{field_name} || []) + [:#{value}] end"
else end
def define_string_accessor(field_name, value)
class_eval "def #{value}?() self.#{field_name} == :#{value} end" class_eval "def #{value}?() self.#{field_name} == :#{value} end"
class_eval "def #{value}!() update_attributes! :#{field_name} => :#{value} end" class_eval "def #{value}!() update_attributes! :#{field_name} => :#{value} end"
end end
end end
end end
end
end
end end