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

Overview

This module defines behaviour for fields.

Defined Under Namespace

Modules: ClassMethods Classes: ForeignKey, Localized, Standard

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (Object) option(option_name, &block)

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



145
146
147
# File 'lib/mongoid/fields.rb', line 145

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

+ (Hash) options

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



158
159
160
# File 'lib/mongoid/fields.rb', line 158

def options
  @options ||= {}
end

Instance Method Details

- (Object) apply_default(name)

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



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

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

- (Object) apply_defaults

Apply all the defaults at once.

Examples:

Apply all the defaults.

model.apply_defaults

Since:

  • 2.4.0



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

def apply_defaults
  apply_pre_processed_defaults
  apply_post_processed_defaults
end

- (Array<String ] The names of the proc defaults.) apply_post_processed_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



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

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

- (Array<String ] The names of the non-proc defaults.) apply_pre_processed_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



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

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

- (Object) demongoized

Cache of demongoized field data mapping field names to all previously demongoized attributes for this object.

The demongoized cache memoized values processed by field getters to provide and identiy map for a given attribute value. That is to say, for a field named 'list' and an @attributes == => [0,1,2] calling 'doc.list' will process '[0,1,2]' exacty once.

The identity of the source attribute is calculated using

Examples:

[attribute.object_id, attribute.hash]

Since:

  • 3.0.0



122
123
124
# File 'lib/mongoid/fields.rb', line 122

def demongoized
  @demongoized ||= Hash.new{|hash, name| hash[name] = Hash.new}
end

- (true, false) using_object_ids?

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.



104
105
106
# File 'lib/mongoid/fields.rb', line 104

def using_object_ids?
  self.class.using_object_ids?
end