class MongoModel::Properties::Property

Attributes

name[R]
options[R]
type[R]

Public Class Methods

new(name, type, options={}) click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 48
def initialize(name, type, options={})
  @name, @type, @options = name.to_sym, type, options
end

Public Instance Methods

==(other) click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 73
def ==(other)
  other.is_a?(self.class) && name == other.name && type == other.type && options == other.options
end
as() click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 52
def as
  options[:as] || name.to_s
end
default(instance) click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 56
def default(instance)
  if options.key?(:default)
    default = options[:default]

    if default.is_a?(Proc)
      case default.arity
      when 0 then instance.instance_exec(&default)
      else        instance.instance_exec(instance, &default)
      end
    else
      default.duplicable? ? default.dup : default
    end
  elsif type.respond_to?(:mongomodel_default)
    type.mongomodel_default(instance)
  end
end
embeddable?() click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 77
def embeddable?
  type.ancestors.include?(EmbeddedDocument)
end
internal?() click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 81
def internal?
  as =~ /^_/ || options[:internal]
end
validate?() click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 85
def validate?
  options[:validate] != false
end

Private Instance Methods

type_converter() click to toggle source
# File lib/mongomodel/concerns/properties.rb, line 90
def type_converter
  @type_converter ||= Types.converter_for(type)
end