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