Módulo: Mongoid::Campos::ClassMethods
- Definido en:
- lib/mongoid/fields.rb,
lib/mongoid/fields.rb
Resumen del método de instancia colapsar
-
#attribute_names ⇒ arreglo<String>
Devuelve un arreglo de nombres de los atributos disponibles en este objeto.
-
#auto_embed_field(name, model: 'voyage-4', num_dimensions: nil, quantization: nil, similarity: nil, índice: nil) ⇒ Object
Declara un campo de texto y registra un índice correspondiente de Atlas Vector Search para él usando el tipo de auto-incrustación (autoEmbed).
-
#cleanse_localized_field_names(name) ⇒ campo
Remueve las _traducciones del nombre del campo dado.
-
#database_field_name(name) ⇒ String
Obtener el nombre del campo proporcionado tal como está almacenado en la base de datos.
-
#extract_id_field(attributes) ⇒ objeto
privado
Extrae el campo id del hash de atributos especificado según los alias definidos en esta clase.
-
#campo(name, options = {}) ⇒ Field
Define todos los campos accesibles en el Documento. Para cada campo definido, se añadirá un método getter y setter como método de instancia al Documento.
-
#id_fields ⇒ arreglo<Symbol | String>
privado
Devuelve la lista de campos id para esta clase modelo, tanto como cadenas como símbolos.
-
#replace_field(name, type) ⇒ Serializable
Reemplazar un campo con un nuevo tipo.
-
#traverse_association_tree(key) {|The, The, Whether| ... } ⇒ Campo
privado
Recorrer hacia abajo el árbol de asociaciones y buscar el campo para la clave proporcionada.
-
#utilizando_identificadores_de_objetos? ⇒ true | false
Método de conveniencia para determinar si estamos utilizando
BSON::ObjectIdscomo nuestra id. -
#vector_field(nombre, dimensions:, similitud: 'coseno', índice: nil) ⇒ Objeto
Declara un campo de vector embedding y registra un índice correspondiente de Atlas Vector Search para él en un solo paso.
Detalles del método de instancia
#attribute_names ⇒ arreglo<String>
Devuelve un arreglo de nombres de los atributos disponibles en este objeto.
Brinda los nombres de los campos de manera independiente del ORM. Rails v3.1+ usa este método para envolver automáticamente parámetros en solicitudes JSON.
449 450 451 |
# Archivo 'lib/mongoid/fields.rb', línea 449 def attribute_names Campos.claves end |
#auto_embed_field(name, model: 'voyage-4', num_dimensions: nil, quantization: nil, similarity: nil, índice: nil) ⇒ Object
Declara un campo de texto y registra un índice de búsqueda vectorial de Atlas Vector Search correspondiente para él usando el tipo de incrustación automática (autoEmbed). Atlas genera las incrustaciones automáticamente en el momento del indexado y la query; no se requieren vectores precomputados.
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 |
# Archivo 'lib/mongoid/fields.rb', línea 542 def (Nombre, model: 'voyage-4', num_dimension: nulo, quantization: nulo, similitud: nulo, index: nulo) Campo(Nombre, tipo: String) field_spec = { tipo: 'autoEmbed', modalidad: 'text', ruta: Nombre.to_s, model: Modelo } field_spec[numDimensions] = num_dimensions si num_dimensions field_spec[quantization] = cuantización si cuantización field_spec[similitud] = similitud si similitud si index vector_search_index(index, campo: [ field_spec ]) else vector_search_index(campo: [ field_spec ]) end end |
#cleanse_localized_field_names(nombre) ⇒ campo
Elimina las _translations del nombre de campo dado. Esto se hace solo cuando aún no existe un nombre de campo o relación con el mismo nombre (es decir, con el sufijo _translations). Esta verificación para un campo existente se realiza recursivamente
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# Archivo 'lib/mongoid/fields.rb', línea 98 def cleanse_localized_field_names(Nombre) Nombre = database_field_name(Nombre.to_s) klass = sí mismo [].tocar hacer |res| ar = Nombre.división('.') ar.each_with_index hacer |fn, i| llave = fn a menos que klass.Campos.key?(fn) || klass.relaciones.key?(fn) llave = si fn.end_with?(TRANSLATIONS_SFX) fn.delete_suffix(TRANSLATIONS_SFX) else fn end end res.push(llave) si klass.Campos.key?(fn) res.push(ar.descartar(i + 1).unirse('.')) a menos que i == ar.longitud - 1 break elsif klass.relaciones.key?(fn) klass = klass.relaciones[llave].klass end end end.unirse('.') end |
#database_field_name(name) ⇒ String
Obtener el nombre del campo proporcionado tal como está almacenado en la base de datos. Se utiliza para determinar si el campo está o no aliasado.
459 460 461 |
# Archivo 'lib/mongoid/fields.rb', línea 459 def database_field_name(Nombre) Campos.database_field_name(Nombre, relaciones, campos_alias, asociaciones_aliased) end |
#extract_id_field(atributos) ⇒ 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.
Extrae el campo id del hash de atributos especificado según los alias definidos en esta clase.
81 82 83 84 85 86 87 88 |
# Archivo 'lib/mongoid/fields.rb', línea 81 def extract_id_field(atributos) id_fields.cada hacer |k| si v = atributos[k] return v end end nulo end |
#campo(nombre, opciones = {}) ⇒ Campo
Define todos los campos accesibles en el Documento. Para cada campo definido, se añadirá un método getter y setter como método de instancia al Documento.
577 578 579 580 581 582 583 584 585 |
# Archivo 'lib/mongoid/fields.rb', línea 577 def Campo(Nombre, = {}) denominada = Nombre.to_s Validadores::Macro.validar(sí mismo, Nombre, ) added = add_field(denominada, ) descendants.cada hacer |subclase| subclase.add_field(denominada, ) end added end |
#id_fields ⇒ arreglo<Symbol | String>
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.
Devuelve la lista de campos id para esta clase modelo, tanto como cadenas como símbolos.
62 63 64 65 66 67 68 69 70 71 |
# Archivo 'lib/mongoid/fields.rb', línea 62 def id_fields IDS.dup.tocar hacer |id_fields| campos_alias.cada hacer |k, v| si v == '_id' id_fields << k.to_sym id_fields << k end end end end |
#replace_field(nombre, tipo) ⇒ Serializable
Reemplazar un campo con un nuevo tipo.
596 597 598 599 |
# Archivo 'lib/mongoid/fields.rb', línea 596 def replace_field(Nombre, tipo) remove_defaults(Nombre) add_field(Nombre, Campos[Nombre]..fusionar(tipo: tipo)) end |
#traverse_association_tree(clave) {|The, The, Whether| ...} ⇒ Campo
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.
Recorrer hacia abajo el árbol de asociaciones y buscar el campo para la clave proporcionada.
627 628 629 |
# Archivo 'lib/mongoid/fields.rb', línea 627 def recorrer_árbol_de_asociaciones(llave, &bloque) Campos.recorrer_árbol_de_asociaciones(llave, Campos, relaciones, asociaciones_aliased, &bloque) end |
#using_object_ids? ⇒ true | false
Método de conveniencia para determinar si estamos utilizando BSON::ObjectIds como nuestra id.
608 609 610 |
# Archivo 'lib/mongoid/fields.rb', línea 608 def ¿usando_object_ids? Campos['_id'].object_id_field? end |
#vector_field(name, dimensions:, similarity: 'cosine', index: nil) ⇒ Objeto
Declara un campo de vector embedding y registra un índice correspondiente de Atlas Vector Search para él en un solo paso.
El campo se almacena como un arreglo. Para opciones avanzadas del índice (quantization, método de indexación, ajuste de HNSW), utiliza en su lugar la combinación explícita field + vector_search_index.
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 |
# Archivo 'lib/mongoid/fields.rb', línea 490 def campo_vectorial(Nombre, dimensions:, similitud: 'cosine', index: nulo) Campo(Nombre, tipo: Arreglo) field_spec = { tipo: 'vector', ruta: Nombre.to_s, numDimensions: dimensión, similitud: similitud } si index vector_search_index(index, campo: [ field_spec ]) else vector_search_index(campo: [ field_spec ]) end end |