Módulo: Mongoid::Association::Accessors

Estendido por:
ActiveSupport::Concern
Incluído em:
Mongoid::Associação
Definido em:
lib/mongoid/association/accessors.rb

Visão geral

Este módulo contém todo o comportamento relacionado ao acesso de associações por meio de getters e setters, e como delegar a construtores para criar novas.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#__build__(name, objeto, connection, updated_fields = nil) ➤ Proxy

Constrói o documento relacionado e cria a associação, a menos que o documento seja nulo, então define a associação neste documento.

Exemplos:

Construa a associação.

person.__build__(:addresses, { :_id => 1 }, association)

Parâmetros:

  • name (string | Símbolo)

    O nome da associação.

  • objeto (Hash | BSON::ObjectId)

    O ID ou atributos a serem usados.

  • associação (Mongoid::Association::Relatable)

    Os metadados da associação.

  • campos_selecionados (Hash) (padrão para: nil)

    Campos que foram recuperados via #only. Se campos selecionados forem especificados, os campos não listados nele não estarão acessíveis no documento criado.

Retorna:

  • (Proxy)

    A associação.



27
28
29
30
# Arquivo 'lib/mongoid/association/accessors.rb', linha 27

def __build__(name, objeto, associação, campos_selecionados = nada)
  relação = create_relation(objeto, associação, campos_selecionados)
  set_relation(name, relação)
end

#create_relation(objeto, associação, campos selecionados = nil) ➤ Proxy

Crie uma associação a partir de um objeto e metadados de associação.

Exemplos:

Crie a associação.

person.create_relation(document, association)

Parâmetros:

  • objeto (Documento | Array <Documento>)

    O alvo da associação.

  • associação (Mongoid::Association::Relatable)

    Os metadados da associação.

  • campos_selecionados (Hash) (padrão para: nil)

    Campos que foram recuperados via #only. Se campos selecionados forem especificados, os campos não listados nele não estarão acessíveis no documento de associação criado.

Retorna:

  • (Proxy)

    A associação.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Arquivo 'lib/mongoid/association/accessors.rb', linha 44

def create_relation(objeto, associação, campos_selecionados = nada)
  chave = @attributes[associação.inverse_type]
  type = chave ? associação.resolvedor.model_for(chave) : nada
  Alvo = se t = associação.COMPILAR(auto, objeto, type, campos_selecionados)
    associação.create_relation(auto, t)
  mais
    nada
  end

  # Só precisa fazer isso em associações incorporadas. As chamadas de resposta pendentes
  # só são adicionados ao materializar os documentos, o que só acontece
  # em associações incorporadas. Não há chamada para o banco de dados de dados no
  # construção de uma associação referenciada.
  se associação.incorporado?
    Array(Alvo).cada fazer |doc|
      doc.tentar(:run_pending_callbacks)
    end
  end

  Alvo
end

#reinício_relation_criteria(nome) ➤ Objeto

Redefine os critérios dentro do proxy de associação. Usado por associações de muitos para muitos para manter a array de ids subjacente sincronizada.

Exemplos:

Redefina os critérios de associação.

person.reset_relation_criteria(:preferences)

Parâmetros:

  • name (Símbolo)

    O nome da associação.



73
74
75
76
77
# Arquivo 'lib/mongoid/association/accessors.rb', linha 73

def reinício_relation_criteria(name)
  se instance_variable_definido?("@_#{name}")
    enviar(name).reinício_unloaded
  end
end

#set_relation(nome, relação) ➤ Proxy

Defina a associação fornecida como uma variável de instância na classe com o nome fornecido. Usado como assistente apenas para limpeza do código.

Exemplos:

Defina o proxy no documento.

person.set(:addresses, addresses)

Parâmetros:

  • name (string | Símbolo)

    O nome da associação.

  • relação (Proxy)

    A associação a ser definida.

Retorna:

  • (Proxy)

    A associação.



89
90
91
# Arquivo 'lib/mongoid/association/accessors.rb', linha 89

def set_relation(name, relação)
  instance_variable_set("@_#{name}", relação)
end