module Enumerize::Multiple

Public Instance Methods

define_methods!(mod) click to toggle source
# File lib/enumerize/attribute.rb, line 90
    def define_methods!(mod)
      mod.module_eval "        def #{name}
          unless defined?(@_#{name}_enumerized_set)
            if defined?(super)
              self.#{name} = super
            else
              if defined?(@#{name})
                self.#{name} = @#{name}
              else
                self.#{name} = []
              end
            end
          end

          @_#{name}_enumerized_set
        end

        def #{name}=(values)
          _enumerized_values_for_validation[:#{name}] = values.respond_to?(:map) ? values.map(&:to_s) : values

          @_#{name}_enumerized_set = Enumerize::Set.new(self, self.class.enumerized_attributes[:#{name}], values)
          string_values = #{name}.values.map(&:to_str)

          if defined?(super)
            super string_values
          elsif respond_to?(:write_attribute, true)
            write_attribute '#{name}', string_values
          else
            @#{name} = string_values
          end

          #{name}
        end
", __FILE__, __LINE__ + 1
    end