Module: Mongoid::Fields::ClassMethods
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Extended In: | |
| Defined in: | lib/mongoid/fields.rb, lib/mongoid/fields.rb | 
Instance Attribute Summary
- 
    
      #using_object_ids?  ⇒ true | false 
    
    readonly
    Convenience method for determining if we are using BSON::ObjectIdsas our id.
Instance Method Summary
- 
    
      #attribute_names  ⇒ Array<String> 
    
    Returns an array of names for the attributes available on this object. 
- 
    
      #cleanse_localized_field_names(name)  ⇒ Field 
    
    Removes the _translations from the given field name. 
- 
    
      #database_field_name(name)  ⇒ String 
    
    Get the name of the provided field as it is stored in the database. 
- 
    
      #extract_id_field(attributes)  ⇒ Object 
    
    Internal use only
    Internal use only
    Extracts the id field from the specified attributes hash based on aliases defined in this class. 
- 
    
      #field(name, options = {})  ⇒ Field 
    
    Defines all the fields that are accessible on the ::Mongoid::DocumentFor each field that is defined, a getter and setter will be added as an instance method to the::Mongoid::Document.
- 
    
      #id_fields  ⇒ Array<Symbol | String> 
    
    Internal use only
    Internal use only
    Returns the list of id fields for this model class, as both strings and symbols. 
- 
    
      #replace_field(name, type)  ⇒ Serializable 
    
    Replace a field with a new type. 
- 
    
      #traverse_association_tree(key) {|The, The, Whether| ... } ⇒ Field 
    
    Internal use only
    Internal use only
    Traverse down the association tree and search for the field for the given key. 
Instance Attribute Details
    #using_object_ids?  ⇒ true | false  (readonly)
  
Convenience method for determining if we are using BSON::ObjectIds as our id.
# File 'lib/mongoid/fields.rb', line 514
def using_object_ids? fields["_id"].object_id_field? end
Instance Method Details
#attribute_names ⇒ Array<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.
# File 'lib/mongoid/fields.rb', line 454
def attribute_names fields.keys end
    #cleanse_localized_field_names(name)  ⇒ Field 
  
Removes the _translations from the given field name. This is done only when there doesn’t already exist a field name or relation with the same name (i.e. with the _translations suffix). This check for an existing field is done recursively
# File 'lib/mongoid/fields.rb', line 100
def cleanse_localized_field_names(name) name = database_field_name(name.to_s) klass = self [].tap do |res| ar = name.split('.') ar.each_with_index do |fn, i| key = fn unless klass.fields.key?(fn) || klass.relations.key?(fn) if fn.end_with?(TRANSLATIONS_SFX) key = fn.delete_suffix(TRANSLATIONS_SFX) else key = fn end end res.push(key) if klass.fields.key?(fn) res.push(ar.drop(i+1).join('.')) unless i == ar.length - 1 break elsif klass.relations.key?(fn) klass = klass.relations[key].klass end end end.join('.') 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.
# File 'lib/mongoid/fields.rb', line 464
def database_field_name(name) Fields.database_field_name(name, relations, aliased_fields, aliased_associations) end
    #extract_id_field(attributes)  ⇒ Object 
  
  Extracts the id field from the specified attributes hash based on aliases defined in this class.
# File 'lib/mongoid/fields.rb', line 83
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 ::Mongoid::Document For each field that is defined, a getter and setter will be added as an instance method to the ::Mongoid::Document.
# File 'lib/mongoid/fields.rb', line 483
def field(name, = {}) named = name.to_s Validators::Macro.validate(self, name, ) added = add_field(named, ) descendants.each do |subclass| subclass.add_field(named, ) end added end
#id_fields ⇒ Array<Symbol | String>
Returns the list of id fields for this model class, as both strings and symbols.
# File 'lib/mongoid/fields.rb', line 64
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.
# File 'lib/mongoid/fields.rb', line 502
def replace_field(name, type) remove_defaults(name) add_field(name, fields[name]..merge(type: type)) end
    #traverse_association_tree(key) {|The, The, Whether| ... } ⇒ Field 
  
  Traverse down the association tree and search for the field for the given key.
# File 'lib/mongoid/fields.rb', line 533
def traverse_association_tree(key, &block) Fields.traverse_association_tree(key, fields, relations, aliased_associations, &block) end