Clase: Mongoid::Fields::ForeignKey
- Hereda:
-
Estándar
- Objeto
- Estándar
- Mongoid::Campos::Clave externa
- Definido en:
- lib/mongoid/campos/clave_foránea.rb
Overview
Representa una definición de campo de documento BSON que almacena una clave externa que hace referencia al ID de otro documento. Se utiliza para la asociación.
Resumen de atributos de instancia
Atributos heredados de Standard
#valor_predeterminado, #etiqueta, #nombre, #opciones
Colapso del resumen del método de instancia
-
#add_atomic_changes(documento, nombre, clave, mods, nuevos_elementos, antiguos_elementos) ⇒ Objeto
Agrega los cambios atómicos para este tipo de campo redimensionable.
-
#evolucionar(objeto) ⇒ Objeto
Evolucionar el objeto a un objeto compatible con id.
-
#clave_externa? ⇒ verdadero | falso
¿Es este campo una clave externa?
-
#¿perezoso? ⇒ verdadero | falso
¿Este campo realiza una evaluación predeterminada perezosa?
-
#mongoize(objeto) ⇒ Objeto
Mongoizar el objeto en el valor compatible con Mongo.
-
#object_id_field? ⇒ verdadero | falso
¿El campo es un BSON::ObjectId?
-
#¿redimensionable? ⇒ verdadero | falso
Devuelve verdadero si es una matriz, falso si no lo es.
Métodos heredados del estándar
#asociación, #eval_default, #inicializar, #localizar_presente?, #localizado?, #pre_procesado?, #tipo
Detalles del constructor
Esta clase hereda un constructor de Mongoid::Fields::Standard
Detalles del método de instancia
#add_atomic_changes(documento, nombre, clave, mods, nuevos_elementos, antiguos_elementos) ⇒ 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 añadir cambios atómicos(Documento, Nombre, clave, mods, nuevos_elementos, elementos antiguos) antiguo = (elementos antiguos || []) Nuevo = (nuevos_elementos || []) Si Nuevo.longitud > antiguo.longitud Si Nuevo.primera(antiguo.longitud) == antiguo Documento.atomic_array_add_to_sets[clave] = Nuevo.descartar(antiguo.longitud) else mods[clave] = Documento.atributos[Nombre] end elsif Nuevo.longitud < antiguo.longitud tira = antiguo - Nuevo Si Nuevo == antiguo - tira Documento.extracciones de matriz atómica[clave] = tira else mods[clave] = Documento.atributos[Nombre] end elsif Nuevo != antiguo mods[clave] = Documento.atributos[Nombre] end end |
#evolucionar(objeto) ⇒ Objeto
Evolucionar el objeto a 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 ¿campo_id_del_objeto? || 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.__id_del_objeto_evolucionado__ 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 ¿clave externa? true end |
#¿perezoso? ⇒ verdadero | falso
¿Este campo realiza una evaluación predeterminada perezosa?
84 85 86 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 84 def lazy? tipo.¿redimensionable? end |
#mongoize(objeto) ⇒ Objeto
Mongoizar el objeto en el 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? || ¿campo_id_del_objeto? 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 ¿campo_id_del_objeto? @object_id_field ||= asociación.polimórfico? ? true : asociación.klass.¿usando_id_de_objeto? end |
#¿redimensionable? ⇒ verdadero | falso
Devuelve verdadero si es una matriz, falso si no lo es.
121 122 123 |
# Archivo 'lib/mongoid/fields/foreign_key.rb', línea 121 def ¿redimensionable? tipo.¿redimensionable? end |