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.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 22 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 .
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 61 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?
49 50 51 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 49 def foreign_key? true end |
#preguiçoso? ➤ verdadeiro | false
Este campo faz avaliação padrão preguiçosa?
81 82 83 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 81 def preguiçoso? type.redimensionável? end |
#mongoize(objeto) ➤ Objeto
Mongoize o objeto no valor amigável do mongo .
93 94 95 96 97 98 99 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 93 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?
107 108 109 110 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 107 def object_id_field? @object_id_field ||= associação.polimórfico? || associação.classe.usando_object_ids? end |
#redimensionável? ➤ verdadeiro | false
Retorna verdadeiro se for uma array, falso se não for.
118 119 120 |
# File 'lib/mongoid/fields/foreign_key.rb', linha 118 def redimensionável? type.redimensionável? end |