Sha256: 82574a27b403ae59c85040b4372213bd286c4e8797f270d4a626d5ff5f44410e
Contents?: true
Size: 1.7 KB
Versions: 2
Compression:
Stored size: 1.7 KB
Contents
# encoding: utf-8 module Mongoid #:nodoc: class Field attr_reader :name, :type # Get the declared options for this field # # Returns: # # a hash of options def options @options end # Get the default value for the field. # # Returns: # # The primitive value or a copy of the default. def default copy end # Create the new field with a name and optional additional options. Valid # options are :default # # Options: # # name: The name of the field as a +Symbol+. # options: A +Hash+ of options for the field. # # Example: # # <tt>Field.new(:score, :default => 0)</tt> def initialize(name, options = {}) check_name!(name) @type = options[:type] || String @name, @default = name, options[:default] @copyable = (@default.is_a?(Array) || @default.is_a?(Hash)) @options = options check_default! end # Used for setting an object in the attributes hash. If nil is provided the # default will get returned if it exists. def set(object) type.set(object) end # Used for retrieving the object out of the attributes hash. def get(object) type.get(object) end protected # Slightly faster default check. def copy @copyable ? @default.dup : @default end # Check if the name is valid. def check_name!(name) raise Mongoid::Errors::InvalidField.new(name) if Mongoid.destructive_fields.include?(name.to_s) end def check_default! return if @default.is_a?(Proc) if !@default.nil? && !@default.is_a?(@type) raise Mongoid::Errors::InvalidType.new(@type, @default) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mongoid-2.0.0.beta.15 | lib/mongoid/field.rb |
mongoid-2.0.0.beta.14 | lib/mongoid/field.rb |