Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

Metadados de associação

Associações no Mongoid permitem criar relacionamentos entre modelos. Quando você define uma associação, o Mongoid armazena metadados sobre essa associação. Você pode acessar os metadados chamando o método reflect_on_association em uma classe de modelo ou documento ou acessando diretamente os metadados em um documento específico. O exemplo a seguir mostra como acessar metadados utilizando o método reflect_on_association e por acesso direto:

# Get the metadata for a named association from the class or document
Model.reflect_on_association(:<association_name>)
# Directly access metadata on a document
model.associations[:<association_name>]

Observação

Substitua <association_name> no exemplo anterior pelo nome da sua associação.

Todas as associações contêm atributos que armazenam informações sobre o documento associado. As associações contêm os seguintes atributos:

  • _target: O documento ou documentos procurados

  • _base: O documento no qual a associação está definida

  • _association: Informações sobre a associação

O exemplo a seguir acessa cada um dos atributos anteriores:

class Band
include Mongoid::Document
embeds_many :songs
end
Band.songs = [ song ]
Band.songs._target # returns [ song ]
Band.songs._base # returns band
Band.songs._association # returns the association metadata

A tabela seguinte mostra as informações armazenadas no atributo _association:

Método
Descrição

Association#as

O nome do pai para um filho polimórfico.

Association#as?

Retorna se existe uma opção as.

Association#autobuilding?

Retorna se a associação é de construção automática.

Association#autosaving?

Retorna se a associação está salvando automaticamente.

Association#cascading_callbacks?

Retorna se a associação tem retornos de chamada em cascata do pai.

Association#class_name

O nome da classe do documento com proxy.

Association#cyclic?

Retorna se a associação é uma associação cíclica.

Association#dependent

A opção dependente da associação.

Association#destructive?

Retorna true se a associação tiver um método dependente de exclusão ou destruição.

Association#embedded?

Retorna se a associação está incorporada em outro documento.

Association#forced_nil_inverse?

Retorna se a associação tem um nil inverso definido.

Association#foreign_key

O nome do campo de chave estrangeira.

Association#foreign_key_check

O nome do método de verificação suja do campo de chave estrangeira.

Association#foreign_key_setter

O nome do configurador do campo de chave estrangeira.

Association#indexed?

Retorna se a chave estrangeira é indexada automaticamente.

Association#inverses

Os nomes de todas as associações inversas.

Association#inverse

O nome de uma única associação inversa.

Association#inverse_class_name

O nome da classe da associação no lado inverso.

Association#inverse_foreign_key

O nome do campo de chave estrangeira no lado inverso.

Association#inverse_klass

A classe da associação no lado inverso.

Association#inverse_association

Os metadados da associação no lado inverso.

Association#inverse_of

O nome explicitamente definido da associação inversa.

Association#inverse_setter

O nome do método usado para definir a inversa.

Association#inverse_type

O nome do campo do tipo polimórfico do inverso.

Association#inverse_type_setter

O nome do set do campo do tipo polimórfico do inverso.

Association#key

O nome do campo no hash do atributo que é usado para obter a associação.

Association#klass

A classe dos documentos com proxy na associação.

Association#name

O nome da associação.

Association#options

Retorna self, para compatibilidade de API com ActiveRecord.

Association#order

As opções de classificação personalizada na associação.

Association#polymorphic?

Retorna se a associação é polimórfica.

Association#setter

O nome do campo para definir a associação.

Association#store_as

O nome do atributo no qual armazenar uma associação embarcada.

Association#touchable?

Retorna se a associação tem uma opção de toque.

Association#type

O nome do campo para obter o tipo polimórfico.

Association#type_setter

O nome do campo para definir o tipo polimórfico.

Association#validate?

Retorna se a associação tem uma validação associada.

Voltar

Personalizar comportamento da associação

Nesta página