Módulo: Mongoid::Fields::ClassMethods
- Definido em:
- lib/mongoid/fields.rb,
lib/mongoid/fields.rb
Recolhimento do Resumo do método de instância
-
#variable_names ➤ Array<String>
Retorna uma array de nomes para os atributos disponíveis neste objeto.
-
#auto_embed_field(name, model: 'voyage-4', num_dimensions: nil, quantization: nil, similarity: nil, index: nil) ⇒ Object
Declara um campo de texto e registra um índice do Atlas Vector Search correspondente para ele usando o tipo auto-embedding (autoEmbed).
-
#clean_localized_field_names(name) ⇒ Field
Remove _translations do nome de campo fornecido.
-
#database_field_name(name) ➤ string
Obtenha o nome do campo fornecido conforme armazenado no banco de banco de dados.
-
#extract_id_field(attributes) ➤ Objeto
privado
Extrai o campo ID do hash de atributos especificados com base nos aliases definidos nesta classe.
-
#campo(name, options = {}) ⇒ Field
Define todos os campos acessíveis no documento Para cada campo definido, um getter e setter serão adicionados como um método de instância ao documento.
-
#id_fields ➤ Array<Símbolo | string>
privado
Retorna a lista de campos ID para esta classe de modelo , como strings e símbolos.
-
#replace_field(nome, tipo) ➤ Serializável
Substituir um campo por um novo tipo.
-
#traverse_association_tree(key) {|O, O, Se| ... } ➤ Campo
privado
Percorra a árvore de associações e procure o campo para a chave fornecida.
-
#usando_object_ids? ➤ verdadeiro | false
Método de conveniência para determinar se estamos usando
BSON::ObjectIdscomo nosso ID. -
#vector_field(name, dimension:, similarity: 'cosine', index: nil) ⇒ Object
Declara um campo de vector embeddings e registra um índice correspondente do Atlas Vector Search para ele em uma etapa.
Detalhes do método de instância
#variable_names ➤ Array<String>
Retorna uma array de nomes para os atributos disponíveis neste objeto.
Fornece os nomes dos campo de forma independente de ORM. Rails v3.1+ usa esse método para envolver automaticamente os parâmetros em solicitações JSON.
449 450 451 |
# Arquivo 'lib/mongoid/fields.rb', linha 449 def Atributo_nomes Campos.keys end |
#auto_embed_field(name, model: 'voyage-4', num_dimensions: nil, quantization: nil, similarity: nil, index: nil) ⇒ Object
Declara um campo de texto e registra um índice do Atlas Vector Search correspondente para ele usando o tipo auto-embedding (autoEmbed). O Atlas gera as incorporações automaticamente no momento do índice e da consulta; nenhum vetor pré-computado é necessário.
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 |
# Arquivo 'lib/mongoid/fields.rb', linha 542 def (name, modelo: 'voyage-4', num_dimensions: nada, quantization: nada, similaridade: nada, Índice: nada) Campo(name, tipo: String) field_spec = { tipo: 'autoEmbed', Modalidade: 'text', caminho: name.to_s, modelo: Modelo } field_spec[numDimensions] = num_dimensions se num_dimensions field_spec[quantization] = quantização se quantização field_spec[: similarity] = similaridade se similaridade se index vector_search_index(index, campos: [ field_spec ]) mais vector_search_index(campos: [ field_spec ]) end end |
#clean_localized_field_names(name) ⇒ Field
Remove _translations do nome de campo fornecido. Isso é feito somente quando ainda não existe um nome de campo ou relação com o mesmo nome (ou seja, com o sufixo _translations). Esta verificação para um campo existente é feita 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 |
# Arquivo 'lib/mongoid/fields.rb', linha 98 def Clean_localized_field_names(name) name = database_field_name(name.to_s) classe = auto [].toque fazer |res| ar = name.dividir('.') ar.cada_com_index fazer |fn, i| chave = fn a menos que classe.Campos.chave?(fn) || classe.relações.chave?(fn) chave = se fn.end_with?(Translations_SFX) fn.delete_suffix(Translations_SFX) mais fn end end res.push(chave) se classe.Campos.chave?(fn) res.push(ar.derrubar(i + 1).juntar('.')) a menos que i == ar.Tamanho - 1 intervalo elsif classe.relações.chave?(fn) classe = classe.relações[chave].classe end end end.juntar('.') end |
#database_field_name(name) ➤ string
Obtenha o nome do campo fornecido conforme armazenado no banco de dados. Usado para determinar se o campo tem um nome alternativo ou não.
459 460 461 |
# Arquivo 'lib/mongoid/fields.rb', linha 459 def database_field_name(name) Campos.database_field_name(name, relações, aliased_fields, aliased_associations) end |
#extract_id_field(attributes) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Extrai o campo ID do hash de atributos especificados com base nos aliases definidos nesta classe.
81 82 83 84 85 86 87 88 |
# Arquivo 'lib/mongoid/fields.rb', linha 81 def extract_id_field(attributes) id_fields.cada fazer |k| se v = attributes[k] Método v end end nada end |
#campo(name, options = {}) ⇒ Field
Define todos os campos acessíveis no documento Para cada campo definido, um getter e setter serão adicionados como um método de instância ao documento.
577 578 579 580 581 582 583 584 585 |
# Arquivo 'lib/mongoid/fields.rb', linha 577 def Campo(name, = {}) nomeado = name.to_s Validadores::macro.validar(auto, name, ) adicionado = add_field(nomeado, ) descendants.cada fazer |subclasse| subclasse.add_field(nomeado, ) end adicionado end |
#id_fields ➤ Array<Símbolo | string>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna a lista de campos ID para esta classe de modelo , como strings e símbolos.
62 63 64 65 66 67 68 69 70 71 |
# Arquivo 'lib/mongoid/fields.rb', linha 62 def id_fields IDS.dup.toque fazer |id_fields| aliased_fields.cada fazer |k, v| se v == '_id' id_fields << k.to_sym id_fields << k end end end end |
#replace_field(nome, tipo) ➤ Serializável
Substituir um campo por um novo tipo.
596 597 598 599 |
# Arquivo 'lib/mongoid/fields.rb', linha 596 def replace_field(name, type) remove_defaults(name) add_field(name, Campos[name]..mesclar(tipo: type)) end |
#traverse_association_tree(key) {|O, O, Se| ... } ➤ Campo
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Percorra a árvore de associações e procure o campo para a chave fornecida.
627 628 629 |
# Arquivo 'lib/mongoid/fields.rb', linha 627 def traverse_association_tree(chave, &noum: bloco ; verb: bloquear) Campos.traverse_association_tree(chave, Campos, relações, aliased_associations, &noum: bloco ; verb: bloquear) end |
#usando_object_ids? ➤ verdadeiro | false
Método de conveniência para determinar se estamos usando BSON::ObjectIds como nosso ID.
608 609 610 |
# Arquivo 'lib/mongoid/fields.rb', linha 608 def usando_object_ids? Campos['_id'].object_id_field? end |
#vector_field(name, dimensions:, similarity: 'cosine', índice: nil) ⇒ objeto
Declara um campo de vector embeddings e registra um índice correspondente do Atlas Vector Search para ele em uma etapa.
O campo é armazenado como um array. Para opções avançadas de índice (quantization, método de indexação, ajuste HNSW), use a combinação explícita field + vector_search_index.
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 |
# Arquivo 'lib/mongoid/fields.rb', linha 490 def vector_field(name, dimensions:, similaridade: 'cosine', Índice: nada) Campo(name, tipo: Array) field_spec = { tipo: 'vetor', caminho: name.to_s, numDimensions: Dimensões, similaridade: similaridade } se index vector_search_index(index, campos: [ field_spec ]) mais vector_search_index(campos: [ field_spec ]) end end |