Módulo: Mongoid::Atributos::Dinámicos
- Ampliado por:
- ActiveSupport::Concern
- Definido en:
- lib/mongoid/attributes/dynamic.rb
Overview
Este módulo contiene el comportamiento para 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 escritor para un atributo dinámico.
-
#inspect_dynamic_fields ⇒ String
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 gestiona métodos dinámicos a través del método method_missing
#method_missing(nombre, *args) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método 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.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 120 def method_missing(Nombre, *args) attr = Nombre.to_s return super a menos que atributos.has_key?(attr.lector) si attr.¿escritor/a? getter = attr.lector define_dynamic_writer(getter) write_attribute(getter, args.primero) elsif attr.¿before_type_cast? define_dynamic_before_type_cast_reader(attr.lector) attribute_will_change!(attr.lector) read_attribute_before_type_cast(attr.lector) else getter = attr.lector define_dynamic_reader(getter) attribute_will_change!(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 es parte de una API privada. Se debe evitar el uso de este método 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.
52 53 54 55 56 57 58 59 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 52 def define_dynamic_before_type_cast_reader(Nombre) class_eval hacer define_method("#{nombre}_before_type_cast") hacer attribute_will_change!(Nombre) read_attribute_before_type_cast(Nombre) end end end |
#define_dynamic_reader(name) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Defina un método lector para un atributo dinámico.
33 34 35 36 37 38 39 40 41 42 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 33 def define_dynamic_reader(Nombre) return a menos que Nombre.valid_method_name? class_eval hacer define_method(Nombre) hacer attribute_will_change!(Nombre) read_raw_attribute(Nombre) end end end |
#define_dynamic_writer(name) ⇒ objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Define un método escritor para un atributo dinámico.
69 70 71 72 73 74 75 76 77 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 69 def define_dynamic_writer(Nombre) return a menos que Nombre.valid_method_name? class_eval hacer define_method("#{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.
102 103 104 105 106 107 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 102 def inspect_dynamic_fields claves = atributos.claves - Campos.claves - relaciones.claves - [ '_id', sí mismo.clase.discriminador_clave ] claves.map hacer |Nombre| "#{name}: #{attributes[name].inspect}" end end |
#process_attribute(name, value) ⇒ Object
Si el atributo es dinámico, agregue un campo para él con un tipo de objeto y establezca el valor.
87 88 89 90 91 92 93 94 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 87 def process_attribute(Nombre, Valor) responde = respond_to?("#{name}=") si responde enviar("#{name}=", Valor) else write_attribute(Nombre, Valor) end end |
#respond_to?(nombre, include_private = false) ⇒ true | false
Sobrescribir respond_to? por lo que responde correctamente a los atributos dinámicos.
18 19 20 21 22 23 |
# Archivo 'lib/mongoid/attributes/dynamic.rb', línea 18 def respond_to?(Nombre, incluir_privada = false) super || ( atributos && atributos.has_key?(Nombre.to_s.lector) ) end |