Module: Mongoid::Fields::ClassMethods

Defined in:
build/mongoid-7.3/lib/mongoid/fields.rb,
build/mongoid-7.3/lib/mongoid/fields.rb

Instance Method Summary collapse

Instance Method Details

#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

Model.attribute_names

Returns:

  • (Array<String>)

    The field names

Since:

  • 3.0.0



273
274
275
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 273

def attribute_names
  fields.keys
end

#database_field_name(name) ⇒ String

Get the name of the provided field as it is stored in the database. Used in determining if the field is aliased or not.

Examples:

Get the database field name.

Model.database_field_name(:authorization)

Parameters:

  • name (String, Symbol)

    The name to get.

Returns:

  • (String)

    The name of the field as it’s stored in the db.

Since:

  • 3.0.7



288
289
290
291
292
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 288

def database_field_name(name)
  return nil unless name
  normalized = name.to_s
  aliased_fields[normalized] || normalized
end

#extract_id_field(attributes) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts the id field from the specified attributes hash based on aliases defined in this class.

Parameters:

  • attributes (Hash)

    The attributes to inspect.

Returns:

  • (Object)

    The id value.



74
75
76
77
78
79
80
81
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 74

def extract_id_field(attributes)
  id_fields.each do |k|
    if v = attributes[k]
      return v
    end
  end
  nil
end

#field(name, options = {}) ⇒ Field

Defines all the fields that are accessible on the Document For each field that is defined, a getter and setter will be added as an instance method to the Document.

Examples:

Define a field.

field :score, :type => Integer, :default => 0

Parameters:

  • name (Symbol)

    The name of the field.

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

    The options to pass to the field.

Options Hash (options):

  • :type (Class)

    The type of the field.

  • :label (String)

    The label for the field.

  • :default (Object, Proc)

    The field’s default

Returns:

  • (Field)

    The generated field



309
310
311
312
313
314
315
316
317
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 309

def field(name, options = {})
  named = name.to_s
  Validators::Macro.validate(self, name, options)
  added = add_field(named, options)
  descendants.each do |subclass|
    subclass.add_field(named, options)
  end
  added
end

#id_fieldsArray<Symbol | String>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the list of id fields for this model class, as both strings and symbols.

Returns:

  • (Array<Symbol | String>)

    List of id fields.



55
56
57
58
59
60
61
62
63
64
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 55

def id_fields
  IDS.dup.tap do |id_fields|
    aliased_fields.each do |k, v|
      if v == '_id'
        id_fields << k.to_sym
        id_fields << k
      end
    end
  end
end

#replace_field(name, type) ⇒ Serializable

Replace a field with a new type.

Examples:

Replace the field.

Model.replace_field("_id", String)

Parameters:

  • name (String)

    The name of the field.

  • type (Class)

    The new type of field.

Returns:

Since:

  • 2.1.0



330
331
332
333
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 330

def replace_field(name, type)
  remove_defaults(name)
  add_field(name, fields[name].options.merge(type: type))
end

#using_object_ids?true, false

Convenience method for determining if we are using BSON::ObjectIds as our id.

Examples:

Does this class use object ids?

person.using_object_ids?

Returns:

  • (true, false)

    If the class uses BSON::ObjectIds for the id.

Since:

  • 1.0.0



344
345
346
# File 'build/mongoid-7.3/lib/mongoid/fields.rb', line 344

def using_object_ids?
  fields["_id"].object_id_field?
end