Clase: Mongoid::Fields::ForeignKey
- Hereda:
-
Estándar
- Objeto
- Estándar
- Mongoid::Fields::ForeignKey
- Definido en:
- lib/mongoid/fields/foreign_key.rb
Overview
Representa una definición de campo de documento BSON que almacena una clave foránea que referencia la ID de otro documento. Se usa para el comportamiento de asociación.
Resumen del atributo de la instancia
Atributos heredados de Estándar
#valor_predeterminado, #etiqueta, #nombre, #opciones
Resumen del método de instancia colapsar
-
#add_atomic_changes(documento, nombre, clave, mods, nuevos_elementos, elementos_anteriores) ⇒ objeto
Agrega los cambios atómicos para este tipo de campo redimensionable.
-
#evolve(objeto) ⇒ Objeto
Evoluciona el objeto en un objeto compatible con id.
-
#foreign_key? ⇒ verdadero | falso
¿Este campo es una clave externa?.
-
#¿lazy? ⇒ true | false
¿Este campo realiza una evaluación predeterminada perezosa?
-
#mongoize(objeto) ⇒ Objeto
Convierte el objeto en un valor compatible con Mongo.
-
#campo_id_del_objeto? ⇒ true | false
¿Es el campo un BSON::ObjectId?.
-
#¿redimensionable? ⇒ verdadero | falso
Devuelve true si es un arreglo, false si no lo es.
Métodos heredados de Estándar
#asociación, #eval_default, #initialize, #localize_present?, #localized?, #pre_processed?, #type
Detalles del constructor
Esta clase hereda un constructor de Mongoid::Fields::Standard
Detalles del método de instancia
#agregar_cambios_atómicos(documento, nombre, clave, modificadores, nuevos_elementos, elementos_anteriores) ⇒ Objeto
Agrega los cambios atómicos para este tipo de campo redimensionable.
@todo: Refactorizar, a lo grande.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 25 def add_atomic_changes(Documento, Nombre, llave, mods, new_elements, old_elements) antiguo = (old_elements || []) Nuevo = (new_elements || []) si Nuevo.longitud > antiguo.longitud si Nuevo.primero(antiguo.longitud) == antiguo Documento.atomic_array_add_to_sets[llave] = Nuevo.descartar(antiguo.longitud) else mods[llave] = Documento.atributos[Nombre] end elsif Nuevo.longitud < antiguo.longitud extracciones = antiguo - Nuevo si Nuevo == antiguo - extracciones Documento.extracciones de matriz atómica[llave] = extracciones else mods[llave] = Documento.atributos[Nombre] end elsif Nuevo != antiguo mods[llave] = Documento.atributos[Nombre] end end |
#evolve(objeto) ⇒ Objeto
Evoluciona el objeto en un objeto compatible con id.
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 64 def evolucionar(Objeto) si object_id_field? || Objeto.is_a?(Documento) si asociación.polimórfico? asociación.convert_to_foreign_key(Objeto) elsif Objeto.is_a?(Documento) && Objeto.respond_to?(asociación.clave_primaria) primary_key_field.evolucionar(Objeto.enviar(asociación.clave_primaria)) else Objeto.__evolve_object_id__ end else .evolucionar(Objeto) end end |
#clave_externa? ⇒ verdadero | falso
¿Es este campo una clave externa?
52 53 54 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 52 def foreign_key? true end |
#¿perezoso? ⇒ verdadero | falso
¿Este campo realiza una evaluación perezosa por defecto?
84 85 86 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 84 def lazy? tipo.¿redimensionable? end |
#mongoize(objeto) ⇒ Objeto
Convierte el objeto en un valor compatible con Mongo.
96 97 98 99 100 101 102 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 96 def mangostas(Objeto) si tipo.¿redimensionable? || object_id_field? clave externa mongoize(Objeto) else .mangostas(Objeto) end end |
#object_id_field? ⇒ verdadero | falso
¿El campo es un BSON::ObjectId?
110 111 112 113 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 110 def object_id_field? @object_id_field ||= asociación.polimórfico? ? true : asociación.klass.¿usando_object_ids? end |
#¿resizable? ⇒ true | false
Devuelve true si es un arreglo, false si no lo es.
121 122 123 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 121 def ¿redimensionable? tipo.¿redimensionable? end |