Módulo: Mongoid::Campos::ClassMethods

Definido en:
lib/mongoid/fields.rb,
lib/mongoid/fields.rb

Resumen del método de instancia colapsar

Detalles del método de instancia

#attribute_namesarreglo<String>

Devuelve un arreglo de nombres de los atributos disponibles en este objeto.

Brinda los nombres de los campos de manera independiente del ORM. Rails v3.1+ usa este método para envolver automáticamente parámetros en solicitudes JSON.

Ejemplos:

Obtén los nombres de los campos

Model.attribute_names

Devuelve:

  • (arreglo<String>)

    Los nombres de los campos



454
455
456
# Archivo 'lib/mongoid/fields.rb', línea 454

def nombres de atributos
  campos.claves
end

#cleanse_localized_field_names(nombre) ⇒ campo

Remueve las traducciones del nombre de campo dado. Esto se realiza únicamente cuando no existe ya un nombre de campo o relación con el mismo nombre (es decir, con el sufijo _translations). Esta comprobación de un campo existente se realiza de forma recursiva

Parámetros:

  • Nombre (String | Símbolo)

    El nombre del campo a limpiar.

Devuelve:

  • (campo)

    El nombre del campo sin _traducciones



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Archivo 'lib/mongoid/fields.rb', línea 100

def cleanse_localized_field_names(Nombre)
  Nombre = database_field_name(Nombre.to_s)

  klass = sí mismo
  [].tocar hacer |res|
    ar = Nombre.división('.')
    ar.cada_con_índice hacer |fn, i|
      llave = fn
      a menos que klass.campos.key?(fn) || klass.relaciones.key?(fn)
        si fn.¿Fin_con?(TRANSLATIONS_SFX)
          llave = fn.delete_suffix(TRANSLATIONS_SFX)
        else
          llave = fn
        end

      end
      res.push(llave)

      si klass.campos.key?(fn)
        res.push(ar.descartar(i+1).unirse('.')) a menos que i == ar.longitud - 1
        break
      elsif klass.relaciones.key?(fn)
        klass = klass.relaciones[llave].klass
      end
    end
  end.unirse('.')
end

#database_field_name(name) ⇒ String

Obtiene el nombre del campo proporcionado tal como está almacenado en la base de datos. Se utiliza para determinar si el campo tiene alias o no.

Parámetros:

  • Nombre (String | Símbolo)

    El nombre a obtener.

Devuelve:

  • (string)

    El nombre del campo tal como está almacenado en la base de datos.



464
465
466
# Archivo 'lib/mongoid/fields.rb', línea 464

def database_field_name(Nombre)
  Campos.database_field_name(Nombre, relaciones, campos_alias, asociaciones_aliasadas)
end

#extract_id_field(atributos) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Extrae el campo id del hash de atributos especificado según los alias definidos en esta clase.

Parámetros:

  • atributos (encriptada)

    Los atributos que se deben inspeccionar.

Devuelve:

  • (objeto)

    El valor del id.



83
84
85
86
87
88
89
90
# Archivo 'lib/mongoid/fields.rb', línea 83

def extract_id_field(atributos)
  id_fields.cada hacer |k|
    si v = atributos[k]
      return v
    end
  end
  nulo
end

#campo(nombre, opciones = {}) ⇒ Campo

Define todos los campos accesibles en el Documento. Para cada campo definido, se añadirá un método getter y setter como método de instancia al Documento.

Ejemplos:

Definir un campo.

field :score, type: Integer, default: 0

Parámetros:

  • Nombre (Símbolo)

    El nombre del campo.

  • opciones (Hash) (por defecto: {})

    Las opciones que se pasan al campo.

Opciones Hash (options):

  • Tipo (Clase | Símbolo | String)

    El tipo del campo.

  • :etiqueta (Cadena)

    La etiqueta para el campo.

  • por defecto (Objeto | Proc)

    El campo predeterminado.

Devuelve:

  • (campo)

    El campo generado



483
484
485
486
487
488
489
490
491
# Archivo 'lib/mongoid/fields.rb', línea 483

def Campo(Nombre, opciones = {})
  denominada = Nombre.to_s
  Validadores::Macro.validar(sí mismo, Nombre, opciones)
  added = add_field(denominada, opciones)
  descendants.cada hacer |subclase|
    subclase.add_field(denominada, opciones)
  end
  added
end

#id_fieldsarreglo<Symbol | String>

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la lista de campos id para esta clase modelo, tanto como cadenas como símbolos.

Devuelve:

  • (arreglo<Symbol | String>):

    Lista de campos id.



64
65
66
67
68
69
70
71
72
73
# Archivo 'lib/mongoid/fields.rb', línea 64

def id_fields
  IDS.dup.tocar hacer |id_fields|
    campos_alias.cada hacer |k, v|
      si v == '_id'
        id_fields << k.to_sym
        id_fields << k
      end
    end
  end
end

#replace_field(nombre, tipo) ⇒ Serializable

Reemplazar un campo con un nuevo tipo.

Ejemplos:

Reemplace el campo.

Model.replace_field("_id", String)

Parámetros:

  • Nombre (string)

    El nombre del campo.

  • tipo (Clase) -

    El nuevo tipo de campo.

Devuelve:



502
503
504
505
# Archivo 'lib/mongoid/fields.rb', línea 502

def reemplazar_campo(Nombre, tipo)
  remove_defaults(Nombre)
  add_field(Nombre, campos[Nombre].opciones.fusionar(tipo: tipo))
end

#traverse_association_tree(clave) {|The, The, Whether| ...} ⇒ Campo

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Recorrer hacia abajo el árbol de asociaciones y buscar el campo para la clave proporcionada.

Parámetros:

  • llave (string)

    La clave utilizada para la búsqueda del árbol de asociaciones.

  • &bloque

    El bloque.

Parámetros de rendimiento:

  • La (Símbolo)

    método actual.

  • La (Symbol | string)

    campo o la relación.

  • Si (true | false)

    el segundo parámetro de rendimiento es un campo o no.

Devuelve:

  • (campo)

    El campo encontrado para la clave dada al final de la búsqueda. Esto devolverá nil si lo último que se encontró es una asociación o no se encontró ningún campo para la clave dada.



533
534
535
# Archivo 'lib/mongoid/fields.rb', línea 533

def árbol de asociación transversal(llave, Ybloque)
  Campos.árbol de asociación transversal(llave, campos, relaciones, asociaciones_aliasadas, Ybloque)
end

#using_object_ids?true | false

Método de conveniencia para determinar si estamos usando BSON::ObjectIds como nuestra identificación.

Ejemplos:

¿Esta clase utiliza IDs de objetos?

person.using_object_ids?

Devuelve:

  • (true | false)

    Si la clase utiliza BSON::ObjectIds para el ID.



514
515
516
# Archivo 'lib/mongoid/fields.rb', línea 514

def ¿usando_object_ids?
  campos["_identificación"].object_id_field?
end