Class: Mongoid::Fields::Standard

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
build/mongoid-master/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.

Since:

  • 3.0.0



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 75

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.



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

def default_val
  @default_val
end

#labelObject

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



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

def label
  @label
end

#nameObject

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



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

def name
  @name
end

#optionsObject

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



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

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.

Since:

  • 2.4.0



28
29
30
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 28

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.

Since:

  • 2.2.0



121
122
123
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 121

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.

Since:

  • 2.1.8



43
44
45
46
47
48
49
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 43

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.

Since:

  • 2.4.0



59
60
61
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 59

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.

Since:

  • 3.1.0



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

def lazy?
  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.

Since:

  • 2.3.0



109
110
111
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 109

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.

Since:

  • 2.2.0



133
134
135
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 133

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.

Since:

  • 3.0.0



145
146
147
148
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 145

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.

Since:

  • 2.1.0



158
159
160
# File 'build/mongoid-master/lib/mongoid/fields/standard.rb', line 158

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