Clase: Mongoid::Asociación::Muchos

Hereda:
Apoderado
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Enumerable
Definido en:
lib/mongoid/association/many.rb

Overview

Esta es la superclase para todos los proxies de asociación de muchos a uno y de muchos a muchos.

Resumen constante

Constantes heredadas de Proxy

Proxy::KEEPER_METHODS

Resumen del atributo de la instancia

Atributos heredados de Proxy

#_association, #_base, #_target

Resumen del método de instancia colapsar

Métodos heredados de Proxy

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

Métodos incluidos de Marshalable

#marshal_dump, #marshal_load

Detalles del constructor

Esta clase hereda un constructor de Mongoid::Association::Proxy

Detalles del método de instancia

#en blanco?verdadero | falso

¿Está vacía la asociación?

Ejemplos:

¿Está vacía la asociación?

person.addresses.blank?

Devuelve:

  • (true | false)

    Si la asociación está vacía o no.



22
23
24
# Archivo 'lib/mongoid/association/many.rb', línea 22

def blank?
  !any?
end

#crear(atributos = nil, tipo = nil, &bloque) ⇒ documento

Crea un nuevo documento en la asociación "referencias múltiples". Esto guardará el documento si el documento principal se ha conservado.

Ejemplos:

Crea y guarda el nuevo documento.

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

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los atributos necesarios para crear.

  • tipo (Clase) (predeterminado: nulo)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    El documento recién creado.



36
37
38
39
40
41
42
43
44
# Archivo 'lib/mongoid/association/many.rb', línea 36

def Cree(atributos = nulo, tipo = nulo, Ybloque)
  si atributos.is_a?(::Arreglo)
    atributos.map { |attrs| Cree(attrs, tipo, Ybloque) }
  else
    doc = compilar(atributos, tipo, Ybloque)
    _base.¿persistió? ? doc.guardar : aumentar_no guardado(doc)
    doc
  end
end

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

Crea un nuevo documento sobre la asociación de muchas referencias. Esto guardará el documento si el principal se ha almacenado y generará un error si la validación falla.

Ejemplos:

Crea y guarda el nuevo documento.

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

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los atributos necesarios para crear.

  • tipo (Clase) (predeterminado: nulo)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    El documento recién creado.

Aumenta:



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

def ¡crea!(atributos = nulo, tipo = nulo, Ybloque)
  si atributos.is_a?(::Arreglo)
    atributos.map { |attrs| ¡crea!(attrs, tipo, Ybloque) }
  else
    doc = compilar(atributos, tipo, Ybloque)

    Arreglo(doc).cada hacer |doc|
      doc.intentar(:run_pending_callbacks)
    end

    _base.¿persistió? ? doc.save! : aumentar_no guardado(doc)
    doc
  end
end

#buscar_o_crear_por(atributos = {}, tipo = nulo, &bloque) ⇒ Documento

Encuentra el primer documento que cumpla las condiciones dadas o crea un nuevo documento con las condiciones que se proporcionaron.

@param [ Hash ] attrs The attributes to search or create with.
@param [ Class ] type The optional type of document to create.

Ejemplos:

Buscar o crear.

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

Devuelve:

  • (documento)

    Un documento existente o uno recién creado.



84
85
86
# Archivo 'lib/mongoid/association/many.rb', línea 84

def buscar_o_crear_por(attrs = {}, tipo = nulo, Ybloque)
  encontrar_o(crear:, attrs, tipo, Ybloque)
end

#find_or_create_by!(attrs = {}, type = nil, &block) ⇒ documento

Busque el primer documento dado las condiciones, o cree un nuevo documento con las condiciones proporcionadas. Esto generará un error si la validación falla.

Ejemplos:

Buscar o crear.

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

Parámetros:

  • attrs (Hash) (por defecto: {})

    Los atributos para buscar o crear.

  • tipo (Clase) (predeterminado: nulo)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    Un documento existente o uno recién creado.

Aumenta:



100
101
102
# Archivo 'lib/mongoid/association/many.rb', línea 100

def find_or_create_by!(attrs = {}, tipo = nulo, Ybloque)
  encontrar_o(¡crear!, attrs, tipo, Ybloque)
end

#buscar_o_inicializar_por(atributos = {}, tipo = nulo, &bloque) ⇒ Documento

Encuentra el primer Document dadas las condiciones, o instancia un nuevo documento con las condiciones proporcionadas.

Ejemplos:

Buscar o inicializar.

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

Parámetros:

  • attrs (Hash) (por defecto: {})

    Los atributos para buscar o inicializar.

  • tipo (Clase) (predeterminado: nulo)

    La subclase opcional a construir.

Devuelve:

  • (documento)

    Un documento existente o uno recién instanciado.



114
115
116
# Archivo 'lib/mongoid/association/many.rb', línea 114

def find_or_initialize_by(attrs = {}, tipo = nulo, Ybloque)
  encontrar_o(compilar, attrs, tipo, Ybloque)
end

#nil?false

Este proxy nunca puede ser nulo.

Ejemplos:

¿El proxy es nulo?

relation.nil?

Devuelve:

  • (false)

    Siempre falso.



124
125
126
# Archivo 'lib/mongoid/association/many.rb', línea 124

def nil?
  false
end

#respond_to?(nombre, include_private = false) ⇒ true | false

Dado que method_missing se anula, también deberíamos anular esto.

Ejemplos:

¿El proxy responde al método?

relation.respond_to?(:name)

Parámetros:

  • Nombre (Símbolo)

    El nombre del método.

  • incluir_privado (true | false) (por defecto: false)

    Si incluir métodos privados.

Devuelve:

  • (true | false)

    Si el proxy responde al método.



137
138
139
140
# Archivo 'lib/mongoid/association/many.rb', línea 137

def respond_to?(Nombre, incluir_privado = false)
  [].respond_to?(Nombre, incluir_privado) ||
    klass.respond_to?(Nombre, incluir_privado) || super
end

#alcanceCriterios

Este es el acceso público a los criterios de la asociación.

Ejemplos:

Obtener la asociación con ámbito.

relation.scoped

Devuelve:



148
149
150
# Archivo 'lib/mongoid/association/many.rb', línea 148

def delimitado
  criterios
end

#serializable_hash(options = {}) ⇒ Hash

Obtiene el documento como un hash serializable, utilizado por los serializadores JSON y XML de ActiveModel. Esta sobrescritura es solo para poder pasar las opciones :include y :except para obtener asociaciones en el hash.

Ejemplos:

Obtenga el hash serializable.

relation.serializable_hash

Parámetros:

  • opciones (Hash) (por defecto: {})

    Las opciones a pasar.

Opciones Hash (options):

  • except (Símbolo| Cadena | Matriz<Símbolo | Cadena>)

    No incluya este(s) campo(s).

  • incluir (Símbolo| Cadena | Matriz<Símbolo | Cadena>)

    Qué asociación(es) incluir.

  • :solo (Símbolo| Cadena | Matriz<Símbolo | Cadena>)

    Limite los campos únicamente a estos.

Devuelve:

  • (encriptada)

    Los documentos, listos para ser serializados.



166
167
168
# Archivo 'lib/mongoid/association/many.rb', línea 166

def serializable_hash(opciones = {})
  _objetivo.map { |Documento| Documento.serializable_hash(opciones) }
end

#sin ámbitoCriterios

Obtén un criterio para los documentos incrustados sin que se aplique el alcance por defecto.

Ejemplos:

Obtener los criterios no acotados.

person.addresses.unscoped

Devuelve:



177
178
179
# Archivo 'lib/mongoid/association/many.rb', línea 177

def sin alcance
  criterios.sin alcance
end