Classe: Mongoid::Association::Many

Herda:
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.

Resumo constante

Constantes herdadas do Proxy

Proxy::KEEPER_METHODS

Resumo do atributo de instância

Atributos herdados do proxy

#_association, #_base, #_target

Recolhimento do Resumo do método de instância

Métodos herdados do Proxy

apply_ordering, #extend_proxies, #initialize, #klass, #reset_unloaded, #substitutable

Métodos incluídos noMarshable

.

Detalhes do construtor

Esta classe herda um construtor de Mongoid::Association::Proxy

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.



22
23
24
# Arquivo 'lib/mongoid/association/many.rb', linha 22

def em branco?
  !algum?
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:



36
37
38
39
40
41
42
43
44
# Arquivo 'lib/mongoid/association/many.rb', linha 36

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:



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Arquivo 'lib/mongoid/association/many.rb', linha 59

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 The attributes to search or create with.
@param [ Class ] type The optional type of document to create.

Exemplos:

Encontre ou crie.

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

Retorna:

  • (Documento)

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



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

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:



100
101
102
# Arquivo 'lib/mongoid/association/many.rb', linha 100

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.



114
115
116
# Arquivo 'lib/mongoid/association/many.rb', linha 114

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.



124
125
126
# Arquivo 'lib/mongoid/association/many.rb', linha 124

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.



137
138
139
140
# Arquivo 'lib/mongoid/association/many.rb', linha 137

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:



148
149
150
# Arquivo 'lib/mongoid/association/many.rb', linha 148

def com escopo
  critério
end

#serializable_hash(options = {}) ⇒ Hash

Obtém o documento 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.



166
167
168
# Arquivo 'lib/mongoid/association/many.rb', linha 166

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:



177
178
179
# Arquivo 'lib/mongoid/association/many.rb', linha 177

def sem escopo
  critério.sem escopo
end