Módulo: Mongoid::Atributos::Dinámico
- Ampliado por:
- ActiveSupport::Preocupación
- Definido en:
- lib/mongoid/atributos/dynamic.rb
Overview
Este módulo contiene el comportamiento de los atributos dinámicos.
Colapso del resumen del método de instancia
-
#define_dynamic_before_type_cast_reader(nombre) ⇒ Objeto
privada
Define un método lector para un atributo dinámico antes de realizar el type cast.
-
#define_dynamic_reader(nombre) ⇒ Objeto
privada
Defina un método lector para un atributo dinámico.
-
#define_dynamic_writer(nombre) ⇒ Objeto
privada
Define un método de escritura para un atributo dinámico.
-
#inspeccionar_campos_dinámicos ⇒ Cadena
Obtenga una matriz de campos dinámicos inspeccionados para el documento.
-
#method_missing(nombre, *args) ⇒ Objeto
privada
Se utiliza para permitir métodos de acceso para atributos dinámicos.
-
#process_attribute(nombre, valor) ⇒ Objeto
Si el atributo es dinámico, agregue un campo para él con un tipo de objeto y establezca el valor.
-
#responder_a?(nombre, incluir_privado = falso) ⇒ verdadero | falso
Anular respond_to? para que responda correctamente a los atributos dinámicos.
Manejo de métodos dinámicos
Esta clase maneja métodos dinámicos a través del método method_missing
#method_missing(nombre, *args) ⇒ 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.
Se utiliza para permitir métodos de acceso para atributos dinámicos.
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 122 def método_faltante(Nombre, *args) attr = Nombre.a_s return Super a no ser que atributos.has_key?(attr.lector) Si attr.¿escritor? adquiridor = attr.lector define_escritor_dinámico(adquiridor) atributo de escritura(adquiridor, args.primera) elsif attr.¿antes de la conversión de tipos? definir_dinámico_antes_del_lector_de_conversión_de_tipos(attr.lector) ¡El atributo cambiará!(attr.lector) leer_atributo_antes_de_la_conversión_de_tipo(attr.lector) else adquiridor = attr.lector define_lector_dinámico(adquiridor) ¡El atributo cambiará!(attr.lector) read_raw_attribute(adquiridor) end end |
Detalles del método de instancia
#define_dynamic_before_type_cast_reader(nombre) ⇒ 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.
Define un método lector para un atributo dinámico antes de realizar el type cast.
54 55 56 57 58 59 60 61 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 54 def definir_dinámico_antes_del_lector_de_conversión_de_tipos(Nombre) evaluación de clase hacer definir_método("#{nombre}_antes_de_la_conversión_de_tipo") hacer ¡El atributo cambiará!(Nombre) leer_atributo_antes_de_la_conversión_de_tipo(Nombre) end end end |
#define_dynamic_reader(nombre) ⇒ 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.
Defina un método lector para un atributo dinámico.
35 36 37 38 39 40 41 42 43 44 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 35 def define_lector_dinámico(Nombre) return a no ser que Nombre.¿nombre_del_método_válido? evaluación de clase hacer definir_método(Nombre) hacer ¡El atributo cambiará!(Nombre) read_raw_attribute(Nombre) end end end |
#define_dynamic_writer(nombre) ⇒ 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.
Define un método de escritura para un atributo dinámico.
71 72 73 74 75 76 77 78 79 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 71 def define_escritor_dinámico(Nombre) return a no ser que Nombre.¿nombre_del_método_válido? evaluación de clase hacer definir_método("#{nombre}=") hacer |valor| atributo de escritura(Nombre, valor) end end end |
#inspeccionar_campos_dinámicos ⇒ Cadena
Obtenga una matriz de campos dinámicos inspeccionados para el documento.
104 105 106 107 108 109 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 104 def inspeccionar_campos_dinámicos claves = atributos.claves - campos.claves - relaciones.claves - ["_identificación", yo.clase.clave discriminadora] return claves.map hacer |Nombre| "#{nombre }: #{atributos[nombre]. inspeccionar}" end end |
#process_attribute(nombre, valor) ⇒ Objeto
Si el atributo es dinámico, agregue un campo para él con un tipo de objeto y establezca el valor.
89 90 91 92 93 94 95 96 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 89 def atributo_de_proceso(Nombre, valor) responde = respond_to?("#{nombre}=") Si !responde atributo de escritura(Nombre, valor) else Enviar("#{nombre}=", valor) end end |
#responder_a?(nombre, incluir_privado = falso) ⇒ verdadero | falso
Anular respond_to? para que responda correctamente a los atributos dinámicos.
20 21 22 23 24 25 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 20 def respond_to?(Nombre, incluir_privado = false) Super || ( atributos && atributos.has_key?(Nombre.a_s.lector) ) end |