Módulo: Mongoid::Fields::ClassMethods

Definido em:
lib/mongoid/fields.rb,
lib/mongoid/fields.rb

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#variable_namesArray<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.

Exemplos:

Obtenha os nomes dos campos

Model.attribute_names

Retorna:

  • (Array<String>)

    Os nomes dos campo



448
449
450
# Arquivo 'lib/mongoid/fields.rb', linha 448

def Atributo_nomes
  Campos.keys
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

Parâmetros:

  • name (string | Símbolo)

    O nome do campo a ser limpo.

Retorna:

  • (Campo)

    O nome do campo sem _translations



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Arquivo 'lib/mongoid/fields.rb', linha 95

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)
        se três = fn.corresponder(/(.*)_translations\z/)&.capturas&.primeiro
          chave = três
        mais
          chave = 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.

Parâmetros:

  • name (string | Símbolo)

    O nome a ser obtido.

Retorna:

  • (string)

    O nome do campo conforme armazenado no banco de dados.



458
459
460
# Arquivo 'lib/mongoid/fields.rb', linha 458

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.

Parâmetros:

  • attributes (Hash)

    Os atributos a serem inspecionados.

Retorna:

  • (Objeto)

    O valor do ID .



78
79
80
81
82
83
84
85
# Arquivo 'lib/mongoid/fields.rb', linha 78

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.

Exemplos:

Defina um campo.

field :score, type: Integer, default: 0

Parâmetros:

  • name (Símbolo)

    O nome do campo.

  • opções (Hash) (padrão para: {})

    As opções a serem passadas para o campo .

Hash de opções (opções):

  • :type (Classe | Símbolo | string)

    O tipo do campo.

  • :label (string)

    O rótulo do campo.

  • :default (Objeto | Proc)

    O padrão do campo.

Retorna:

  • (Campo)

    O campo gerado



477
478
479
480
481
482
483
484
485
# Arquivo 'lib/mongoid/fields.rb', linha 477

def Campo(name, opções = {})
  nomeado = name.to_s
  Validadores::macro.validar(auto, name, opções)
  adicionado = add_field(nomeado, opções)
  descendants.cada fazer |subclasse|
    subclasse.add_field(nomeado, opções)
  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.

Retorna:

  • (Array<Símbolo | string>)

    Lista de campos de ID.



59
60
61
62
63
64
65
66
67
68
# Arquivo 'lib/mongoid/fields.rb', linha 59

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.

Exemplos:

Substitua o campo}.

Model.replace_field("_id", String)

Parâmetros:

  • name (string)

    O nome do campo.

  • type (Classe)

    O novo tipo de campo.

Retorna:



496
497
498
499
# Arquivo 'lib/mongoid/fields.rb', linha 496

def replace_field(name, type)
  remove_defaults(name)
  add_field(name, Campos[name].opções.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.

Parâmetros:

  • chave (string)

    A chave usada para pesquisar a árvore de associação.

  • &block

    O bloco.

Parâmetros de rendimento:

  • O (Símbolo)

    método atual.

  • O (Símbolo | string)

    campo ou relação.

  • Se (verdadeiro | falso)

    o segundo parâmetro de rendimento é um campo ou não.

Retorna:

  • (Campo)

    O campo encontrado para a chave fornecida no final da pesquisa. Isso retornará nulo se a última coisa encontrada for uma associação ou nenhum campo for encontrado para a chave fornecida.



527
528
529
# Arquivo 'lib/mongoid/fields.rb', linha 527

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.

Exemplos:

Essa classe usa IDs de objeto ?

person.using_object_ids?

Retorna:

  • (verdadeiro | falso)

    Se a classe usar BSON::ObjectIds para o ID.



508
509
510
# Arquivo 'lib/mongoid/fields.rb', linha 508

def usando_object_ids?
  Campos["_id"].object_id_field?
end