Classe: Mongoid::Fields::ForeignKey
- Herda:
-
Padrão
- Objeto
- Padrão
- Mongoid::Fields::ForeignKey
- Definido em:
- lib/mongoid/fields/foreign_key.rb
Visão geral
Representa uma definição de campo de documento BSON que armazena uma chave estrangeira que faz referência ao ID de outro documento. Usado para comportamento de associação.
Resumo do atributo de instância
Atributos herdados do Padrão
#default_val, #label, #name, #options
Recolhimento do Resumo do método de instância
-
#add_atomic_changes(documento, name, key, mods, new_elements, old_elements) ➤ Object
Adiciona as alterações atômicas para este tipo de campo redimensionável.
-
#evolua(objeto) ➤ Objeto
Evolua o objeto para um objeto compatível com ID .
-
#foreign_key? ➤ verdadeiro | false
Este campo é uma chave estrangeira?
-
#preguiçoso? ➤ verdadeiro | false
Este campo faz avaliação padrão preguiçosa?
-
#mongoize(objeto) ➤ Objeto
Mongoize o objeto no valor amigável do mongo .
-
#object_id_field? ➤ verdadeiro | false
O campo é um BSON::ObjectId?
-
#redimensionável? ➤ verdadeiro | false
Retorna verdadeiro se for uma array, falso se não for.
Métodos herdados do Padrão
#association, #eval_default, #initialize, #localize_present?, #localizado?, #pre_processed?, #type
Detalhes do construtor
Esta classe herda um construtor de Mongoid::Fields::Standard
Detalhes do método de instância
#add_atomic_changes(documento, name, key, mods, new_elements, old_elements) ➤ Object
Adiciona as alterações atômicas para este tipo de campo redimensionável.
@todo: Refactor, grande momento.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 25 def add_atomic_changes(documento, name, chave, mods, new_elements, old_elements) antigo = (old_elements || []) Novo = (new_elements || []) se Novo.Tamanho > antigo.Tamanho se Novo.primeiro(antigo.Tamanho) == antigo documento.atomic_array_add_to_sets[chave] = Novo.derrubar(antigo.Tamanho) mais mods[chave] = documento.attributes[name] end elsif Novo.Tamanho < antigo.Tamanho puxa = antigo - Novo se Novo == antigo - puxa documento.atomic_array_pulls[chave] = puxa mais mods[chave] = documento.attributes[name] end elsif Novo != antigo mods[chave] = documento.attributes[name] end end |
#evolua(objeto) ➤ Objeto
Evolua o objeto para um objeto compatível com ID .
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 64 def evolua(objeto) se object_id_field? || objeto.is_a?(Documento) se associação.polimórfico? associação.convert_to_foreign_key(objeto) elsif objeto.is_a?(Documento) && objeto.respond_to?(associação.primary_key) primary_key_field.evolua(objeto.enviar(associação.primary_key)) mais objeto.__evolve_object_id__ end mais .evolua(objeto) end end |
#foreign_key? ➤ verdadeiro | false
Este campo é uma chave estrangeira?
52 53 54 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 52 def foreign_key? true end |
#preguiçoso? ➤ verdadeiro | false
Este campo faz avaliação padrão preguiçosa?
84 85 86 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 84 def preguiçoso? type.redimensionável? end |
#mongoize(objeto) ➤ Objeto
Mongoize o objeto no valor amigável do mongo .
96 97 98 99 100 101 102 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 96 def mongoize(objeto) se type.redimensionável? || object_id_field? mongoize_foreign_key(objeto) mais .mongoize(objeto) end end |
#object_id_field? ➤ verdadeiro | false
O campo é um BSON::ObjectId?
110 111 112 113 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 110 def object_id_field? @object_id_field ||= associação.polimórfico? ? true : associação.classe.usando_object_ids? end |
#redimensionável? ➤ verdadeiro | false
Retorna verdadeiro se for uma array, falso se não for.
121 122 123 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 121 def redimensionável? type.redimensionável? end |