Class: Mongoid::Fields::Standard

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
build/mongoid-8.1/lib/mongoid/fields/standard.rb

Direct Known Subclasses

ForeignKey, Localized

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ Standard

Create the new field with a name and optional additional options.

Examples:

Create the new field.

Field.new(:name, :type => String)

Parameters:

  • options (Hash) (defaults to: {})

    The field options.

Options Hash (options):

  • :type (Class)

    The class of the field.

  • :default (Object)

    The default value for the field.

  • :label (String)

    The field’s label.



66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 66

def initialize(name, options = {})
  @name = name
  @options = options
  @label = options[:label]
  @default_val = options[:default]

  # @todo: Durran, change API in 4.0 to take the class as a parameter.
  # This is here temporarily to address #2529 without changing the
  # constructor signature.
  if default_val.respond_to?(:call)
    define_default_method(options[:klass])
  end
end

Instance Attribute Details

#default_valObject

Defines the behavior for defined fields in the document. Set readers for the instance variables.



10
11
12
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 10

def default_val
  @default_val
end

#labelObject

Defines the behavior for defined fields in the document. Set readers for the instance variables.



10
11
12
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 10

def label
  @label
end

#nameObject

Defines the behavior for defined fields in the document. Set readers for the instance variables.



10
11
12
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 10

def name
  @name
end

#optionsObject

Defines the behavior for defined fields in the document. Set readers for the instance variables.



10
11
12
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 10

def options
  @options
end

Instance Method Details

#add_atomic_changes(document, name, key, mods, new, old) ⇒ Object

Adds the atomic changes for this type of resizable field.

field.add_atomic_changes(doc, “key”, {}, [], [])

Examples:

Add the atomic changes.

Parameters:

  • document (Document)

    The document to add to.

  • name (String)

    The name of the field.

  • key (String)

    The atomic location of the field.

  • mods (Hash)

    The current modifications.

  • new (Array)

    The new elements to add.

  • old (Array)

    The old elements getting removed.



25
26
27
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 25

def add_atomic_changes(document, name, key, mods, new, old)
  mods[key] = new
end

#associationMetadata

Get the metadata for the field if its a foreign key.

Examples:

Get the metadata.

field.

Returns:

  • (Metadata)

    The association metadata.



116
117
118
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 116

def association
  @association ||= options[:association]
end

#eval_default(doc) ⇒ Object

Evaluate the default value and return it. Will handle the serialization, proc calls, and duplication if necessary.

Examples:

Evaluate the default value.

field.eval_default(document)

Parameters:

  • doc (Document)

    The document the field belongs to.

Returns:

  • (Object)

    The serialized default value.



38
39
40
41
42
43
44
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 38

def eval_default(doc)
  if fields = doc.__selected_fields
    evaluated_default(doc) if included?(fields)
  else
    evaluated_default(doc)
  end
end

#foreign_key?true | false

Is this field a foreign key?

Examples:

Is the field a foreign key?

field.foreign_key?

Returns:

  • (true | false)

    If the field is a foreign key.



52
53
54
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 52

def foreign_key?
  false
end

#lazy?true | false

Does this field do lazy default evaluation?

Examples:

Is the field lazy?

field.lazy?

Returns:

  • (true | false)

    If the field is lazy.



86
87
88
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 86

def lazy?
  false
end

#localize_present?true | false

Is the localized field enforcing values to be present?

Examples:

Is the localized field enforcing values to be present?

field.localize_present?

Returns:

  • (true | false)

    If the field enforces present.



106
107
108
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 106

def localize_present?
  false
end

#localized?true | false

Is the field localized or not?

Examples:

Is the field localized?

field.localized?

Returns:

  • (true | false)

    If the field is localized.



96
97
98
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 96

def localized?
  false
end

#object_id_field?true | false

Is the field a BSON::ObjectId?

Examples:

Is the field a BSON::ObjectId?

field.object_id_field?

Returns:

  • (true | false)

    If the field is a BSON::ObjectId.



126
127
128
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 126

def object_id_field?
  @object_id_field ||= (type == BSON::ObjectId)
end

#pre_processed?true | false

Does the field pre-process its default value?

Examples:

Does the field pre-process the default?

field.pre_processed?

Returns:

  • (true | false)

    If the field’s default is pre-processed.



136
137
138
139
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 136

def pre_processed?
  @pre_processed ||=
    (options[:pre_processed] || (default_val && !default_val.is_a?(::Proc)))
end

#typeClass

Get the type of this field - inferred from the class name.

Examples:

Get the type.

field.type

Returns:

  • (Class)

    The name of the class.



147
148
149
# File 'build/mongoid-8.1/lib/mongoid/fields/standard.rb', line 147

def type
  @type ||= options[:type] || Object
end