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 perezosa por defecto?
-
#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? ⇒ true | false
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.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 22 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.atomic_array_pulls[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.
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 61 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 |
#¿foreign_key? ⇒ true | false
¿Es este campo una clave externa?
49 50 51 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 49 def foreign_key? true end |
#perezoso? ⇒ verdadero | falso
¿Este campo realiza una evaluación perezosa por defecto?
81 82 83 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 81 def lazy? tipo.¿redimensionable? end |
#mongoize(objeto) ⇒ Objeto
Convierte el objeto en un valor compatible con Mongo.
93 94 95 96 97 98 99 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 93 def mongoize(Objeto) si tipo.¿redimensionable? || object_id_field? mongoize_foreign_key(Objeto) else .mongoize(Objeto) end end |
#object_id_field? ⇒ verdadero | falso
¿Es el campo un BSON::ObjectId?
107 108 109 110 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 107 def object_id_field? @object_id_field ||= asociación.polimórfico? || asociación.klass.¿usando_object_ids? end |
#¿resizable? ⇒ true | false
Devuelve true si es un arreglo, false si no lo es.
118 119 120 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 118 def ¿redimensionable? tipo.¿redimensionable? end |