Sha256: 5d6382a007ec6dab93e9627d27a359db43eb76ea5726f0f6c59069c5a4cda3ab

Contents?: true

Size: 841 Bytes

Versions: 3

Compression:

Stored size: 841 Bytes

Contents

module Mongoid #:nodoc
  # This module defines behaviour for fields.
  module Fields
    module ClassMethods #:nodoc
      def create_accessors(name, meth, options = {})
        generated_field_methods.module_eval do
          define_method(meth) { read_attribute(name) }
          define_method("#{meth}=") do |value| 
            if options[:type] == Array && options[:geo]
              value = case value
                when String then value.split(",").map(&:to_f)
                when Array then value.map(&:to_f)
                else value
              end
            end
            write_attribute(name, value) 
          end
          define_method("#{meth}?") do
            attr = read_attribute(name)
            (options[:type] == Boolean) ? attr == true : attr.present?
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid_geo-0.1.3 lib/mongoid/geo/fields.rb
mongoid_geo-0.1.2 lib/mongoid/geo/fields.rb
mongoid_geo-0.1.1 lib/mongoid/geo/fields.rb