Módulo: Mongoid::Association

Estendido por:
ActiveSupport::Concern
Inclui:
Acessores, Construtores, Dependendo, Incorporado::Cyclic, macros, Referenciado::AutoSave, Referenciado::CounterCache, Referenciado::Syncable, Reflections
Incluído em:
Componível
Definido em:
lib/mongoid/association.rb,
lib/mongoid/association/one.rb,
lib/mongoid/association/many.rb,
lib/mongoid/association/eager.rb,
lib/mongoid/association/proxy.rb,
lib/mongoid/association/macros.rb,
lib/mongoid/association/nested.rb,
lib/mongoid/association/options.rb,
lib/mongoid/association/bindable.rb,
lib/mongoid/association/builders.rb,
lib/mongoid/association/accessors.rb,
lib/mongoid/association/depending.rb,
lib/mongoid/association/relatable.rb,
lib/mongoid/association/nested/one.rb,
lib/mongoid/association/marshardable.rb,
lib/mongoid/association/nested/many.rb,
lib/mongoid/association/reflections.rb,
lib/mongoid/association/constrainable.rb,
lib/mongoid/association/eager_loadable.rb,
lib/mongoid/association/embedded/eager.rb,
lib/mongoid/association/embedded/cycle.rb,
lib/mongoid/association/embedded/batchable.rb,
lib/mongoid/association/referenced/has_one.rb,
lib/mongoid/association/embedded/embeds_one.rb,
lib/mongoid/association/referenced/has_many.rb,
lib/mongoid/association/referenced/syncable.rb,
lib/mongoid/association/embedded/embedded_in.rb,
lib/mongoid/association/embedded/embeds_many.rb,
lib/mongoid/association/referenced/auto_save.rb,
lib/mongoid/association/referenced/belongs_to.rb,
lib/mongoid/association/nested/nested_buildable.rb,
lib/mongoid/association/referenced/counter_cache.rb,
lib/mongoid/association/referenced/has_one/eager.rb,
lib/mongoid/association/referenced/has_one/proxy.rb,
lib/mongoid/association/embedded/embeds_one/proxy.rb,
lib/mongoid/association/referenced/has_many/eager.rb,
lib/mongoid/association/referenced/has_many/proxy.rb,
lib/mongoid/association/embedded/embedded_in/proxy.rb,
lib/mongoid/association/embedded/embeds_many/proxy.rb,
lib/mongoid/association/referenced/has_one/binding.rb,
lib/mongoid/association/embedded/embeds_one/binding.rb,
lib/mongoid/association/referenced/belongs_to/eager.rb,
lib/mongoid/association/referenced/belongs_to/proxy.rb,
lib/mongoid/association/referenced/has_many/binding.rb,
lib/mongoid/association/embedded/embedded_in/binding.rb,
lib/mongoid/association/embedded/embeds_many/binding.rb,
lib/mongoid/association/referenced/has_one/buildable.rb,
lib/mongoid/association/embedded/embeds_one/buildable.rb,
lib/mongoid/association/referenced/belongs_to/binding.rb,
lib/mongoid/association/referenced/has_many/buildable.rb,
lib/mongoid/association/embedded/embedded_in/buildable.rb,
lib/mongoid/association/embedded/embeds_many/buildable.rb,
lib/mongoid/association/referenced/has_many/enumerable.rb,
lib/mongoid/association/referenced/belongs_to/buildable.rb,
lib/mongoid/association/referenced/has_and_belongs_to_many.rb,
lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb,
lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb,
lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb,
lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb

Visão geral

Módulo Mixin que adiciona comportamento de associação a um documento Mongoid . Adiciona métodos como #embedded? que indicam o estado de associação relativa de um documento.

Definido sob namespace

Módulos: Acessores, Bindable, Construtores, Constrainable, Dependendo, EagerLoadable, Incorporado, Macs, Em ordem, Aninhado, Opções, Referenciado, Reflexões, Classes relacionais : Eager, Muitos, Um, Proxy

Colapsode resumo constante

MACRO_MAPPING =

Mapeie as macros para suas classes de associação correspondentes.

Retorna:

  • (Hash)

    O mapeamento de macros para sua classe de associação.

{
    embeds_one: associação::Embedded::Incorpora um,
    incorpora_many: associação::Embedded::Incorpora muitos,
    embedded_in: associação::Embedded::Incorporado em,
    has_one: associação::Referenciado::Tem um,
    has_many: associação::Referenciado::Tem muitos,
    has_and_belongs_to_many: associação::Referenciado::Tem e pertence a muitos,
    requires_to: associação::Referenciado::Pertence a,
}.congelar

Constantes incluídas de Dependendo

Dependendo::estratégias

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Métodos incluídos de Reflexões

#reflect_on_all_association, #reflect_on_association

Métodos incluídos de macros

#associations

Métodos incluídos de Dependendo

#apply_destroy_dependencies!, define_dependency!, valide!

Métodos incluídos dos acessadores

#__build__, #create_relation, #reset_relation_criteria, #set_relation

Métodos incluídos do Referenced::Syncable

#_syncable?, #_synced, #_synced?, #remove_inverse_keys, #update_inverse_keys

Métodos incluídos do Referenced::CounterCache

define_callbacks!, #reset_counters

Métodos incluídos do Referenced::AutoSave

#__autosaving__, #autosaved?, #changed_for_autosave?, define_autosave!

Detalhes do atributo da instância

#_association ➤ Object

Retorna o valor do atributo _association.



51
52
53
# Arquivo 'lib/mongoid/association.rb', linha 51

def _association
  @_association
end

Detalhes do método de instância

#association_nameSímbolo

Obtenha o nome da associação para este documento. Se nenhuma associação tiver sido definida

an error will be raised.

Exemplos:

Obtenha o nome da associação.

document.association_name

Retorna:

  • (Símbolo)

    O nome da associação.

Aumenta:



98
99
100
101
# Arquivo 'lib/mongoid/association.rb', linha 98

def association_name
  aumentar Errors::NoMetadata.Novo(auto.classe.name) a menos que _association
  _association.name
end

#incorporado?verdadeiro | false

Determine se o documento em si está incorporado em outro documento por meio dos canais apropriados. (Se tiver um documento pai.)

Exemplos:

O documento está incorporado?

address.embedded?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se o documento tiver um documento pai .



65
66
67
# Arquivo 'lib/mongoid/association.rb', linha 65

def incorporado?
  @embedded ||= (cíclica ? _parent.presente? : auto.classe.incorporado?)
end

#embedded_many?verdadeiro | false

Determine se o documento faz parte de uma associação embeds_many.

Exemplos:

O documento em uma incorporação tem muitos?

address.embedded_many?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se em um incorporar muitos.



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

def embedded_many?
  _association && _association.is_a?(associação::Embedded::Incorpora muitos)
end

#embedded_one?verdadeiro | false

Determine se o documento faz parte de uma associação embeds_one.

Exemplos:

O documento está incorporado?

address.embedded_one?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se estiver incorporado em um.



85
86
87
# Arquivo 'lib/mongoid/association.rb', linha 85

def embedded_one?
  _association && _association.is_a?(associação::Embedded::Incorpora um)
end

#referenced_many?verdadeiro | false

Determine se o documento faz parte de uma associação reference_many.

Exemplos:

O documento em referências é muitos?

post.referenced_many?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se em muitas referências.



109
110
111
# Arquivo 'lib/mongoid/association.rb', linha 109

def referenced_many?
  _association && _association.is_a?(associação::Referenciado::Tem muitos)
end

#referenced_one?verdadeiro | false

Determine se o documento faz parte de uma associação reference_one.

Exemplos:

O documento está em uma referência?

address.referenced_one?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se em uma referência.



119
120
121
# Arquivo 'lib/mongoid/association.rb', linha 119

def referenced_one?
  _association && _association.is_a?(associação::Referenciado::Tem um)
end

#reload_relations ➤ Hash

Método de conveniência para iterar pelas associações carregadas e recarregá-las.

Exemplos:

Recarregue as associações.

document.reload_relations

Retorna:

  • (Hash)

    Os metadados da associação.



130
131
132
133
134
135
136
137
138
# Arquivo 'lib/mongoid/association.rb', linha 130

def reload_relations
  relações.cada_pair fazer |name, meta|
    se instance_variable_definido?("@_#{name}")
      se _parent.nada? || instance_variable_get("@_#{name}") != _parent
        remove_instance_variable("@_#{name}")
      end
    end
  end
end