Classe: Mongoid::Association::Many

Herda:
Associação::Proxy
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Enumerável
Definido em:
lib/mongoid/association/many.rb

Visão geral

Esta é a superclasse para todos os proxies de associação muitos para um e muitos para muitos.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#embranco?verdadeiro | false

A associação está vazia?

Exemplos:

A associação está vazia?

person.addresses.blank?

Retorna:

  • (verdadeiro | falso)

    Se a associação está vazia ou não.



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

def em branco?
  !algum?
end

#cache_version(timestamp_column = :updated_at) ⇒ string

Para compatibilidade com o cache do Rails. Retorna uma string com base no registro de data/hora fornecido e inclui o número de registros na relação na versão.

Parâmetros:

  • timestamp_column (string | Símbolo) (padrão para: :updated_at)

    a coluna de carimbo de data/hora a ser usada ao construir a chave.

Retorna:

  • (string)

    a string de versão do cache



195
196
197
198
# Arquivo 'lib/mongoid/association/many.rb', linha 195

def cache_version(timestamp_column = :updated_at)
  @cache_version ||= {}
  @cache_version[timestamp_column] ||= compute_cache_version(timestamp_column)
end

#create(attributes = nil, type = nil, &block) ➤ Documento

Cria um novo documento na associação de muitas referências. Isso salvará o documento se o pai tiver sido persistente.

Exemplos:

Crie e salve o novo documento.

person.posts.create(:text => "Testing")

Parâmetros:

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

    Os atributos para criar.

  • type (Classe) (padrão para: nil)

    O tipo opcional de documento a ser criado.

Retorna:



42
43
44
45
46
47
48
49
50
# Arquivo 'lib/mongoid/association/many.rb', linha 42

def criar(attributes = nada, type = nada, &noum: bloco ; verb: bloquear)
  se attributes.is_a?(::Array)
    attributes.map { |attrs| criar(attrs, type, &noum: bloco ; verb: bloquear) }
  mais
    doc = COMPILAR(attributes, type, &noum: bloco ; verb: bloquear)
    _base.persistiu? ? doc.Salvar : create_unsaved(doc)
    doc
  end
end

#criar!(attributes = nil, type = nil, &block) ➤ Documento

Cria um novo documento na associação de muitas referências. Isso salvará o documento se o pai tiver sido persistente e gerará um erro se a validação falhar.

Exemplos:

Crie e salve o novo documento.

person.posts.create!(:text => "Testing")

Parâmetros:

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

    Os atributos para criar.

  • type (Classe) (padrão para: nil)

    O tipo opcional de documento a ser criado.

Retorna:

Aumenta:



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Arquivo 'lib/mongoid/association/many.rb', linha 65

def criar!(attributes = nada, type = nada, &noum: bloco ; verb: bloquear)
  se attributes.is_a?(::Array)
    attributes.map { |attrs| criar!(attrs, type, &noum: bloco ; verb: bloquear) }
  mais
    doc = COMPILAR(attributes, type, &noum: bloco ; verb: bloquear)

    Array(doc).cada fazer |doc|
      doc.tentar(:run_pending_callbacks)
    end

    _base.persistiu? ? doc.save! : create_unsaved(doc)
    doc
  end
end

#find_or_create_by(attrs = {}, type = nil, &block) ➤ Documento

Encontre o primeiro documento de acordo com as condições ou crie um novo documento com as condições que foram fornecidas.

@param [ Hash ] attrs Os atributos para pesquisar ou criar. @param [ classe ] type O tipo opcional de document a ser criado.

Exemplos:

Encontre ou crie.

person.posts.find_or_create_by(:title => "Testing")

Retorna:

  • (Documento)

    Um documento existente ou um documento recém-criado.



90
91
92
# Arquivo 'lib/mongoid/association/many.rb', linha 90

def find_or_create_by(attrs = {}, type = nada, &noum: bloco ; verb: bloquear)
  find_or(:create, attrs, type, &noum: bloco ; verb: bloquear)
end

#find_or_create_by!(attrs = {}, type = nil, &block) ➤ Documento

Encontre o primeiro documento de acordo com as condições ou crie um novo documento com as condições que foram fornecidas. Isso gerará um erro se a validação falhar.

Exemplos:

Encontre ou crie.

person.posts.find_or_create_by!(:title => "Testing")

Parâmetros:

  • attrs (Hash) (padrão para: {})

    Os atributos com os quais pesquisar ou criar.

  • type (Classe) (padrão para: nil)

    O tipo opcional de documento a ser criado.

Retorna:

  • (Documento)

    Um documento existente ou um documento recém-criado.

Aumenta:



106
107
108
# Arquivo 'lib/mongoid/association/many.rb', linha 106

def find_or_create_by!(attrs = {}, type = nada, &noum: bloco ; verb: bloquear)
  find_or(:create!, attrs, type, &noum: bloco ; verb: bloquear)
end

#find_or_initialize_by(attrs = {}, type = nil, &block) ➤ Documento

Encontre o primeiro Document de acordo com as condições ou instancie um novo documento com as condições que foram fornecidas

Exemplos:

Encontre ou inicialize.

person.posts.find_or_initialize_by(:title => "Test")

Parâmetros:

  • attrs (Hash) (padrão para: {})

    Os atributos do Atlas Search ou com os quais inicializar.

  • type (Classe) (padrão para: nil)

    A subclasse opcional a ser construída.

Retorna:

  • (Documento)

    Um documento existente ou um documento recém-instanciado.



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

def find_or_initialize_by(attrs = {}, type = nada, &noum: bloco ; verb: bloquear)
  find_or(:build, attrs, type, &noum: bloco ; verb: bloquear)
end

#nil?false

Essa proxy nunca pode ser nula.

Exemplos:

A proxy é nula?

relation.nil?

Retorna:

  • (falso)

    Sempre falso.



130
131
132
# Arquivo 'lib/mongoid/association/many.rb', linha 130

def nada?
  false
end

#respond_to?(nome, include_private = false) ➤ true | false

Como method_missing foi substituído, devemos substituir isso também.

Exemplos:

O proxy responde ao método?

relation.respond_to?(:name)

Parâmetros:

  • name (Símbolo)

    O nome do método.

  • include_private (verdadeiro | falso) (padrão para: false)

    Se incluir métodos privados.

Retorna:

  • (verdadeiro | falso)

    Se o proxy responder ao método.



143
144
145
146
# Arquivo 'lib/mongoid/association/many.rb', linha 143

def respond_to?(name, include_private = false)
  [].respond_to?(name, include_private) ||
    classe.respond_to?(name, include_private) || super
end

#com escopoCritérios

Este é o acesso público aos critérios da associação.

Exemplos:

Obtenha a associação com escopo.

relation.scoped

Retorna:



154
155
156
# Arquivo 'lib/mongoid/association/many.rb', linha 154

def com escopo
  critério
end

#serializable_hash(options = {}) ⇒ Hash

Obtém o document como um hash serializável, usado pelos serializadores JSON e XML do ActiveModel. Essa substituição é apenas para poder passar as opções :include e :exceto para obter associações no hash.

Exemplos:

Obtenha o hash serializável.

relation.serializable_hash

Parâmetros:

  • opções (Hash) (padrão para: {})

    As opções a serem aprovadas.

Hash de opções (opções):

  • :exceto (Símbolo | string | Array<Símbolo | string>)

    Não inclua estes campo.

  • :include (Símbolo | string | Array<Símbolo | string>)

    Quais associações incluir.

  • :only (Símbolo | string | Array<Símbolo | string>)

    Limite o(s) campo(s) a apenas estes.

Retorna:

  • (Hash)

    Os documentos, prontos para serem serializados.



172
173
174
# Arquivo 'lib/mongoid/association/many.rb', linha 172

def serializable_hash(opções = {})
  _target.map { |documento| documento.serializable_hash(opções) }
end

#sem escopoCritérios

Obtenha critérios para os documentos incorporados sem o escopo padrão aplicado.

Exemplos:

Obtenha os critérios sem escopo.

person.addresses.unscoped

Retorna:



183
184
185
# Arquivo 'lib/mongoid/association/many.rb', linha 183

def sem escopo
  critério.sem escopo
end