Module: Mongoid::Fields

Extended by:
ActiveSupport::Concern
Included in:
Components
Defined in:
lib/mongoid/fields.rb,
lib/mongoid/fields/standard.rb,
lib/mongoid/fields/localized.rb,
lib/mongoid/fields/foreign_key.rb,
lib/mongoid/fields/validators/macro.rb

Overview

This module defines behaviour for fields.

Defined Under Namespace

Modules: ClassMethods, Validators Classes: ForeignKey, Localized, Standard

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.option(option_name, &block) ⇒ Object

Stores the provided block to be run when the option name specified is defined on a field.

No assumptions are made about what sort of work the handler might perform, so it will always be called if the ‘option_name` key is provided in the field definition – even if it is false or nil.

Examples:

Mongoid::Fields.option :required do |model, field, value|
  model.validates_presence_of field if value
end

Parameters:

  • option_name (Symbol)

    the option name to match against

  • block (Proc)

    the handler to execute when the option is provided.

Since:

  • 2.1.0



143
144
145
# File 'lib/mongoid/fields.rb', line 143

def option(option_name, &block)
  options[option_name] = block
end

.optionsHash

Return a map of custom option names to their handlers.

Examples:

Mongoid::Fields.options
# => { :required => #<Proc:0x00000100976b38> }

Returns:

  • (Hash)

    the option map

Since:

  • 2.1.0



156
157
158
# File 'lib/mongoid/fields.rb', line 156

def options
  @options ||= {}
end

Instance Method Details

#apply_default(name) ⇒ Object

Applies a single default value for the given name.

Examples:

Apply a single default.

model.apply_default("name")

Parameters:

  • name (String)

    The name of the field.

Since:

  • 2.4.0



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/mongoid/fields.rb', line 74

def apply_default(name)
  unless attributes.has_key?(name)
    if field = fields[name]
      default = field.eval_default(self)
      unless default.nil?
        attribute_will_change!(name)
        attributes[name] = default
      end
    end
  end
end

#apply_defaultsObject

Apply all the defaults at once.

Examples:

Apply all the defaults.

model.apply_defaults

Since:

  • 2.4.0



92
93
94
95
# File 'lib/mongoid/fields.rb', line 92

def apply_defaults
  apply_pre_processed_defaults
  apply_post_processed_defaults
end

#apply_post_processed_defaultsArray<String ] The names of the proc defaults.

Apply all default values to the document which are procs.

Examples:

Apply all the proc defaults.

model.apply_post_processed_defaults

Returns:

  • (Array<String ] The names of the proc defaults.)

    Array<String ] The names of the proc defaults.

Since:

  • 2.4.0



60
61
62
63
64
# File 'lib/mongoid/fields.rb', line 60

def apply_post_processed_defaults
  post_processed_defaults.each do |name|
    apply_default(name)
  end
end

#apply_pre_processed_defaultsArray<String ] The names of the non-proc defaults.

Apply all default values to the document which are not procs.

Examples:

Apply all the non-proc defaults.

model.apply_pre_processed_defaults

Returns:

  • (Array<String ] The names of the non-proc defaults.)

    Array<String ] The names of the non-proc defaults.

Since:

  • 2.4.0



46
47
48
49
50
# File 'lib/mongoid/fields.rb', line 46

def apply_pre_processed_defaults
  pre_processed_defaults.each do |name|
    apply_default(name)
  end
end

#attribute_namesArray<String>

Returns an array of names for the attributes available on this object.

Provides the field names in an ORM-agnostic way. Rails v3.1+ uses this method to automatically wrap params in JSON requests.

Examples:

Get the field names

docment.attribute_names

Returns:

  • (Array<String>)

    The field names

Since:

  • 3.0.0



108
109
110
# File 'lib/mongoid/fields.rb', line 108

def attribute_names
  self.class.attribute_names
end

#using_object_ids?true, false

Note:

Refactored from using delegate for class load performance.

Is the document using object ids?

Examples:

Is the document using object ids?

model.using_object_ids?

Returns:

  • (true, false)

    Using object ids.



120
121
122
# File 'lib/mongoid/fields.rb', line 120

def using_object_ids?
  self.class.using_object_ids?
end