Módulo: Mongoid::Atributos::Dinámicos
- Ampliado por:
- ActiveSupport::Concern
- Definido en:
- lib/mongoid/attributes/dynamic.rb
Overview
Este módulo contiene el comportamiento de los atributos dinámicos.
Resumen del método de instancia colapsar
-
#define_dynamic_before_type_cast_reader(nombre) ⇒ Objeto
privado
Define un método lector para un atributo dinámico antes de realizar el type cast.
-
#definir_lector_dinámico(definir_lector_dinámico)(nombre) ⇒ Objeto
privado
Defina un método lector para un atributo dinámico.
-
#define_dynamic_writer(nombre) ⇒ objeto
privado
Define un método de escritura para un atributo dinámico.
-
#inspeccionar_campos_dinámicos ⇒ Cadena
Obtenga un arreglo de campos dinámicos inspeccionados para el documento.
-
#method_missing(nombre, *args) ⇒ objeto
privado
Se usa 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.
-
#respond_to?(nombre, include_private = false) ⇒ true | false
Sobrescribir respond_to? por lo que responde correctamente a los atributos dinámicos.
Gestión dinámica de métodos
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 usa 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 method_missing(Nombre, *args) attr = Nombre.to_s return super a menos que atributos.has_key?(attr.lector) si attr.¿escritor? getter = attr.lector define_escritor_dinámico(getter) write_attribute(getter, args.primero) elsif attr.¿before_type_cast? define_dynamic_before_type_cast_reader(attr.lector) ¡El atributo cambiará!(attr.lector) leer_atributo_antes_de_la_conversión_de_tipo(attr.lector) else getter = attr.lector define_dynamic_reader(getter) ¡El atributo cambiará!(attr.lector) read_raw_attribute(getter) end end |
Detalles del método de instancia
#define_dynamic_before_type_cast_reader(name) ⇒ Object
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 define_dynamic_before_type_cast_reader(Nombre) class_eval 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_dynamic_reader(Nombre) return a menos que Nombre.¿nombre_del_método_válido? class_eval hacer definir_método(Nombre) hacer ¡El atributo cambiará!(Nombre) read_raw_attribute(Nombre) end end end |
#define_dynamic_writer(name) ⇒ 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 menos que Nombre.¿nombre_del_método_válido? class_eval hacer definir_método("#{name}=") hacer |Valor| write_attribute(Nombre, Valor) end end end |
#inspect_dynamic_fields ⇒ String
Obtenga un arreglo de campos dinámicos inspeccionados para el documento.
104 105 106 107 108 109 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 104 def inspect_dynamic_fields claves = atributos.claves - campos.claves - relaciones.claves - ["_identificación", sí mismo.clase.discriminador_clave] 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 process_attribute(Nombre, Valor) responde = respond_to?("#{name}=") si !responde write_attribute(Nombre, Valor) else enviar("#{name}=", Valor) end end |
#respond_to?(nombre, include_private = false) ⇒ true | false
Sobrescribir respond_to? por lo que responde 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.to_s.lector) ) end |