Módulo: Mongoid::Documento

Ampliado por:
ActiveSupport::Preocupación
Incluye:
Componibles, Tocables::Métodos de Instancia
Incluido en:
Asignación de clave de discriminador global::Host de campo no válido
Definido en:
lib/mongoid/documento.rb

Overview

Este es el módulo base para todos los objetos de dominio que deben persistir en la base de datos como documentos.

Definido en el espacio de nombres

Modules: Métodos de clase

Colapso delresumen constante

CLAVE_ILEGAL =

Expresión regular para la coincidencia de claves BSON ilegales. Tenga en cuenta que bson 4.1 tiene la constante BSON::String::ILLEGAL_KEY, que debe usarse en su lugar. Cuando se publique el controlador Ruby 2.3.0 y Mongoid se actualice para requerir ≥ 2.3.0, se podrá usar la constante BSON.

/(\A[$])|(\.)/.freeze

Constantes incluidas desde Composable

Composable::MÓDULOS, Composable::NOMBRES_DE_MÉTODOS_RESERVADOS

Constantes incluidas de Interceptable

Interceptable::LLAMADA DE VUELTA

Constantes incluidas desde la Asociación

Association::MACRO_MAPPING

Constantes incluidas desde Asociación::Dependiente

Asociación::Dependiente::ESTRATEGIAS

Constantes incluidas desde Persistable

Persistable::LIST_OPERATIONS

Constantes incluidas desde Campos

Campos::Booleano, Campos::IDS, Campos::CLASES_BSON_INVÁLIDAS, Campos::Símbolo_de_cadena, Campos::SFX_DE_TRADUCCIONES, Campos::MAPEO_DE_TIPOS

Constantes incluidas de Atomic

Atomic::UPDATES

Colapso delresumen de atributos de instancia

Atributos incluidos de Stateful

#destruido, #marcado_para_destruir, #anteriormente_nuevo_registro

Atributos incluidos de la Asociación

#_asociación

Atributos incluidos en Atributos

#atributos

Atributos incluidos en Clients::StorageOptions

#opciones_de_almacenamiento_recordadas

Colapso del resumen del método de instancia

Métodos incluidos en Touchable::InstanceMethods

#_borrar_actualizaciones_táctiles, #_recopilar_actualizaciones_táctiles, #_ejecutar_devoluciones_de_llamadas_táctiles_desde_la_raíz, #_padre_tocable_?, #suprimir_devoluciones_de_llamadas_táctiles, #toque, #devoluciones_de_llamadas_táctiles_suprimidas?

Métodos incluidos de Composable

métodos prohibidos

Métodos incluidos de Equality

#, #==, #eql?

Métodos incluidos en Copyable

#clon

Métodos incluidos de Interceptable

#_mongoid_ejecutar_niño_después_de_las_devoluciones_de_llamadas, #_mongoid_ejecutar_niño_antes_de_las_devoluciones_de_llamadas, #_mongoid_ejecutar_niño_devoluciones_de_llamadas_con_alrededor, #_mongoid_ejecutar_niño_devoluciones_de_llamadas_sin_alrededor, #¿devolución_de_llamada_ejecutable?, #¿en_estado_de_devolución_de_llamada?, #devoluciones_de_llamadas_pendientes, #devoluciones_de_llamadas_pendientes=, #ejecutar_después_de_las_devoluciones_de_llamadas, #ejecutar_antes_de_las_devoluciones_de_llamadas, #ejecutar_devoluciones_de_llamadas, #ejecutar_devoluciones_de_llamadas_pendientes

Métodos incluidos de Validatable

#begin_validate, #exit_validate, #realizando_validaciones?, #leer_atributo_para_validación, #¿válido?, #validado?, #validado, #validando, #validando_con_consulta?

Métodos incluidos de Traversable

__redefinir, #_hijos, #_descendientes, #_padre, #_padre=, #_¡restablecer_descendientes_memorizados!, #_raíz, #_raíz?, #recopilar_hijos, #recopilar_descendientes, #marcar_descendientes_persistentes, #hereditario?, #parentizar, #eliminar_hijo, #restablecer_descendientes_persistentes

Métodos incluidos en Cacheable

#clave_de_caché

Métodos incluidos de Stateful

#destruido?, #marcado_para_destruir?, #nuevo_registro=, #nuevo_registro?, #persistente?, #anteriormente_nuevo_registro?, #anteriormente_persistente?, #¿insertable?, #¡solo lectura!, #¿solo lectura?, #¿configurable?, #¿actualizable?

Métodos incluidos de Shardable

#shard_key_field_value, #shard_key_fields, #shard_key_selector, #shard_key_selector_in_db

Métodos incluidos en Serializable

#serializable_hash

Métodos incluidos en Seleccionable

#selector_atómico

Métodos incluidos en Reloadable

#recargar

Métodos incluidos de la Asociación

#nombre_de_asociación, #¿incrustado?, #¿incrustado_muchos?, #¿incrustado_uno?, #¿referenciado_muchos?, #¿referenciado_uno?, #recargar_relaciones

Métodos incluidos en Asociación::Reflexiones

#reflexionar_sobre_toda_la_asociación, #reflexionar_sobre_la_asociación

Métodos incluidos en Association::Macros

#asociaciones

Métodos incluidos de Asociación::Dependiente

#¡aplicar_destruir_dependencias!, ¡definir_dependencia!, ¡validar!

Métodos incluidos en Association::Accessors

#__build__, #crear_relación, #restablecer_criterios_de_relación, #establecer_relación

Métodos incluidos en Association::Referenced::Syncable

#_sincronizable?, #_sincronizado, #_sincronizado?, #eliminar_claves_inversas, #actualizar_claves_inversas

Métodos incluidos en Association::Referenced::CounterCache

¡define_devoluciones_de_llamadas!, #reinicia_contadores

Métodos incluidos en Asociación::Referenciado::AutoGuardar

#__autosaving__, #autosaved?, #changed_for_autosave?, define_autosave!

Métodos incluidos de Persistable

#atómicamente, #¡falla_debido_a_la_devolución_de_llamada!, #¡falla_debido_a_la_validación!

Métodos incluidos desde Persistable::Unsettable

#desactivado

Métodos incluidos en Persistable::Upsertable

#upsert

Métodos incluidos de Persistable::Updatable

#update, #update!, #update_attribute

Métodos incluidos en Persistable::Settable

#set

Métodos incluidos en Persistable::Savable

#save, #save!

Métodos incluidos en Persistable::Renamable

#rebautizar

Métodos incluidos en Persistable::Pushable

#añadir_al_conjunto, #empujar

Métodos incluidos de Persistable::Pullable

#pull, #pull_all

Métodos incluidos de Posicional

#posicionalmente

Métodos incluidos en Persistable::Poppable

#pop

Métodos incluidos de Persistable::Multipliable

#mul

Métodos incluidos en Persistable::Minable

#set_min

Métodos incluidos en Persistable::Maxable

#set_max

Métodos incluidos de Persistable::Logical

#poco

Métodos incluidos en Persistable::Incrementable

#Cª

Métodos incluidos en Persistable::Destroyable

#destruir, #destruir!

Métodos incluidos de Persistable::Deletable

#borrar

Métodos incluidos en Persistable::Creatable

#insert

Métodos incluidos de Matchable

#_¿partidos?

Métodos incluidos en Campos

#aplicar_valores_predeterminados, #aplicar_valores_predeterminados_posprocesados, #aplicar_valores_predeterminados_preprocesados, #nombres_de_atributos, nombre_de_campo_de_base_de_datos, #nombre_de_campo_de_base_de_datos, #campo_de_punto_dólar?, #¿configurable_perezosamente?, opción, opciones, atravesar_árbol_de_asociación, #¿usar_identificadores_de_objeto?, #¡validar_nombre_de_campo_escribible!

Métodos incluidos de Evolvable

#__id_del_objeto_evolucionado__

Métodos incluidos en Atributos

#asignar_atributos, #¿atributo_faltante?, #¿atributo_presente?, #atributos_antes_de_la_conversión_de_tipo, #¿tiene_atributo?, #¿tiene_atributo_antes_de_la_conversión_de_tipo?, #procesar_atributo_sin_escribir, #leer_atributo, #leer_atributo_antes_de_la_conversión_de_tipo, #eliminar_atributo, #atributos_tipificados, #escribir_atributo, #escribir_atributos

Métodos incluidos en Attributes::Readonly

#atributo_escribible?

Métodos incluidos de Atributos::Procesamiento

#atributos_del_proceso

Métodos incluidos de los Clientes

borrar, clientes, predeterminado, desconectar, reconectar, establecer, con_nombre

Métodos incluidos desde Clientes::Sesiones

incluido

Métodos incluidos en Clientes::Opciones

#colección, #nombre_de_colección, #cliente_mongo, #contexto_de_persistencia, #contexto_de_persistencia?, #con

Métodos incluidos en Clients::StorageOptions

#¡recuerda_las_opciones_de_almacenamiento!, #opciones_de_almacenamiento

Métodos incluidos de Changeable

#atributo_antes_del_último_guardado, #cambiado, #¿cambiado?, #atributos_cambiados, #cambios, #hijos_cambiados?, #hijos_pueden_haber_cambiado!, #mover_cambios, #persistencia_posterior, #cambios_anteriores, #eliminar_cambio, #cambio_guardado_en_atributo, #cambio_guardado_en_atributo?, #establecedores, #¿se_guardará_el_cambio_en_atributo?

Métodos incluidos de Atomic

#añadir_extracción_atómica, #añadir_desactivación_atómica, #matriz_atómica_añadir_a_conjuntos, #extracciones_matriz_atómica, #inserciones_matriz_atómica, #nombre_atributo_atómico, #modificador_eliminación_atómico, #modificador_inserción_atómico, #ruta_atómica, #rutas_atómicas, #posición_atómica, #extracciones_atómicas, #inserciones_atómicas, #conjuntos_atómicos, #desactivaciones_atómicas,#actualizaciones_atómicas,#extracciones_atómicas_retrasadas, #conjuntos_atómicos_retrasados, #desactivaciones_atómicas_retrasadas, #marcar_como_destruido, #destrucciones_marcadas, #proceso_destrucciones_marcadas

Detalles de los atributos de instancia

#__selected_fieldsObjeto

Devuelve el valor del atributo __selected_fields.



30
31
32
# Archivo 'lib/mongoid/document.rb', línea 30

def __selected_fields
  @__campos_seleccionados
end

#new_recordObjeto (solo lectura)

Devuelve el valor del atributo new_record.



31
32
33
# Archivo 'lib/mongoid/document.rb', línea 31

def nuevo_registro
  @nuevo_record
end

Detalles del método de instancia

#_handle_callbacks_after_instantiation(ejecutar_callbacks) ⇒ 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.

Maneja la configuración y ejecución de devoluciones de llamadas, si se deben ejecutar; de lo contrario, agrega las devoluciones de llamadas apropiadas a la lista de devoluciones de llamadas pendientes.

Parámetros:

  • ejecutar_devoluciones de llamadas (verdadero | falso)

    Si las devoluciones de llamadas deben ejecutarse o no.



186
187
188
189
190
191
192
193
194
195
196
# Archivo 'lib/mongoid/document.rb', línea 186

def _manejar_devoluciones_de_llamadas_después_de_la_instanciación(ejecutar_devoluciones de llamadas)
  Si ejecutar_devoluciones de llamadas
    aplicar_valores predeterminados
    rendimiento yo Si ¿bloque_dado?
    ejecutar_devoluciones de llamadas(:encontrar) a no ser que _find_callbacks.¿vacío?
    ejecutar_devoluciones de llamadas(:inicializar) a no ser que _inicializar_devoluciones de llamada.¿vacío?
  else
    rendimiento yo Si ¿bloque_dado?
    yo.devoluciones de llamadas pendientes += %i[ aplicar_valores predeterminados buscar inicializar ]
  end
end

#como_documentoHash

Devuelve un hash de toda la jerarquía del documento, desde este documento hasta los siguientes. Se utiliza cuando los atributos son necesarios para todo y no solo para el documento actual.

Ejemplos:

Obtén la jerarquía completa.

person.as_document

Devuelve:

  • (Hash)

    Un hash de todos los atributos de la jerarquía.



136
137
138
# Archivo 'lib/mongoid/document.rb', línea 136

def como_documento
  BSON::Documento.Nuevo(como_atributos)
end

#se convierte en(klass) ⇒ Documento

Devuelve una instancia de la clase especificada con los atributos, errores y documentos incrustados del documento actual.

Ejemplos:

Devuelve un documento de subclase como una instancia de superclase.

manager.becomes(Person)

Parámetros:

  • klass (Clase) -

    La clase en la que nos convertiremos.

Devuelve:

  • (Documento) -

    Una instancia de la clase especificada.

Aumentos:

  • (ArgumentError)

    Si la clase no incluye Mongoid::Document



151
152
153
154
155
156
157
158
# Archivo 'lib/mongoid/document.rb', línea 151

def se convierte(klass)
  ¡verificación de documento mongoid!(klass)

  se convirtió en = klass.Nuevo(clonar_documento)
  se convirtió en.estado interno = estado interno

  se convirtió en
end

#freezeDocument

Congela los atributos internos del documento.

Ejemplos:

Congelar el documento

document.freeze

Devuelve:



51
52
53
# Archivo 'lib/mongoid/document.rb', línea 51

def freeze
  como_atributos.freeze y  yo
end

#frozen?true | false

Comprueba si el documento está congelado

Ejemplos:

Check if frozen

document.frozen?

Devuelve:

  • (verdadero | falso)

    Verdadero si está congelado, falso en caso contrario.



61
62
63
# Archivo 'lib/mongoid/document.rb', línea 61

def frozen?
  atributos.frozen?
end

#hashEntero

Delegados de identidad para permitir que dos registros de la misma identidad trabajen con algo como:

[ Person.find(1), Person.find(2), Person.find(3) ] &
[ Person.find(1), Person.find(4) ] # => [ Person.find(1) ]

Ejemplos:

Obtenga el hash.

document.hash

Devuelve:

  • (Entero)

    El hash de la identidad del documento.



75
76
77
# Archivo 'lib/mongoid/document.rb', línea 75

def hash
  identidad.hash
end

#identidadarreglo

Un documento se identifica absolutamente por su clase y su ID de base de datos:

Persona.primera.identidad #=> [Persona, BSON::ObjectId('4f775130a04745933a000003')]

Ejemplos:

Obtener la identidad

document.identity

Devuelve:

  • (Matriz)

    Una matriz que contiene [document.class, document._id]



87
88
89
# Archivo 'lib/mongoid/document.rb', línea 87

def identidad
  [ yo.clase, _id ]
end

#initialize(attrs = nil, &block) ⇒ Document

Crea una instancia de Document y establece los atributos del documento, si se proporcionan. Si no se proporcionan atributos, se inicializarán con un Hash vacío.

Si se define una clave principal, el ID del documento se establecerá en esa clave; de ​​lo contrario, se establecerá en una nueva cadena BSON::ObjectId.

Ejemplos:

Crear un nuevo documento.

Person.new(:title => 'Sir')

Parámetros:

  • attrs (Hash) (predeterminado: nulo)

    Los atributos con los que configurar el documento.

Devuelve:



104
105
106
# Archivo 'lib/mongoid/document.rb', línea 104

def inicializar(attrs = nulo, Ybloque)
  documento_de_construcción(attrs, Ybloque)
end

#internal_state=(estado) ⇒ 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.

Establece el estado interno de este documento. Solo lo usa #becomes para inicializar un documento reescrito.

Parámetros:

  • Estado (Hash)

    El mapa de valores del estado interno.



166
167
168
169
170
171
172
173
174
175
176
# Archivo 'lib/mongoid/document.rb', línea 166

def estado_interno=(Estado)
  yo._id = Estado[:id]
  @atributos_cambiados = Estado[:atributos_cambiados]
  @errors = Modelo activo::Errors.Nuevo(yo).grifo { |e| e.¡copiar!(Estado[:errors]) }
  @nuevo_record = Estado[:nuevo_registro]
  @destruido = Estado[:destruido]

  actualización_discriminadora(Estado[:la clave discriminadora era])

  marcar_estado_persistente_para_documentos_incrustados(Estado[:nuevo_registro])
end

#nombre_del_modeloCadena

Devuelve el nombre del modelo del documento.

Ejemplos:

Devuelve el nombre del modelo.

document.model_name

Devuelve:

  • (Cadena) -

    El nombre del modelo.



114
115
116
# Archivo 'lib/mongoid/document.rb', línea 114

def nombre_del_modelo
  yo.clase.nombre_del_modelo
end

#to_keyCadena

Devuelve el valor clave del documento.

Ejemplos:

Devuelve la llave.

document.to_key

Devuelve:

  • (Cadena) -

    El id del documento o nulo si es nuevo.



124
125
126
# Archivo 'lib/mongoid/document.rb', línea 124

def a_clave
  (¿persistió? || ¿destruido?) ? [ _id.a_s ] : nulo
end