Clase: Mongoid::Association::Many

Hereda:
Association::Proxy
  • 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 del método de instancia colapsar

Detalles del método de instancia

#en blanco?verdadero | falso

¿Está vacía la asociación?

Ejemplos:

¿La asociación está vacía?

person.addresses.blank?

Devuelve:

  • (true | false)

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



28
29
30
# Archivo 'lib/mongoid/association/many.rb', línea 28

def blank?
  !any?
end

#cache_version(timestamp_column = :updated_at) ⇒ String

Para garantizar la compatibilidad con el almacenamiento en caché de Rails. Devuelve una string basada en la marca de tiempo dada e incluye el número de registros en la relación en la versión.

Parámetros:

  • timestamp_column (String | Symbol) (por defecto: :updated_at)

    la columna de marca de tiempo que se debe usar al construir la clave.

Devuelve:

  • (string)

    la string de la versión de la caché



195
196
197
198
# Archivo 'lib/mongoid/association/many.rb', línea 195

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

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

Crea un nuevo documento en la asociación references many. Esto guardará el documento si el padre ha sido persistido.

Ejemplos:

Crea y guarda el nuevo documento.

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

Parámetros:

  • atributos (encriptada) (valor por defecto: nil)

    Los atributos necesarios para crear.

  • tipo (clase) (valor por defecto: nil)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    El documento recién creado.



42
43
44
45
46
47
48
49
50
# Archivo 'lib/mongoid/association/many.rb', línea 42

def Cree(atributos = nulo, tipo = nulo, &bloque)
  si atributos.is_a?(::Arreglo)
    atributos.map { |attrs| Cree(attrs, tipo, &bloque) }
  else
    doc = compilar(atributos, tipo, &bloque)
    _base.¿persistió? ? doc.guardar : raise_unsaved(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 (encriptada) (valor por defecto: nil)

    Los atributos necesarios para crear.

  • tipo (clase) (valor por defecto: nil)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    El documento recién creado.

Aumenta:



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

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

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

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

#find_or_create_by(attrs = {}, tipo = nil, &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 Los atributos con los que buscar o crear. @param [Clase] tipo El tipo opcional de document a crear.

Ejemplos:

Buscar o crear.

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

Devuelve:

  • (documento)

    Un documento existente o uno recién creado.



90
91
92
# Archivo 'lib/mongoid/association/many.rb', línea 90

def find_or_create_by(attrs = {}, tipo = nulo, &bloque)
  find_or(crear:, attrs, tipo, &bloque)
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 (encriptada) (por defecto: {})

    Los atributos para buscar o crear.

  • tipo (clase) (valor por defecto: nil)

    El tipo opcional de documento a crear.

Devuelve:

  • (documento)

    Un documento existente o uno recién creado.

Aumenta:



106
107
108
# Archivo 'lib/mongoid/association/many.rb', línea 106

def find_or_create_by!(attrs = {}, tipo = nulo, &bloque)
  find_or(¡crear!, attrs, tipo, &bloque)
end

#find_or_initialize_by(attrs = {}, type = nil, &block) ⇒ 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 (encriptada) (por defecto: {})

    Los atributos a buscar o inicializar con.

  • tipo (clase) (valor por defecto: nil)

    La subclase opcional para compilar.

Devuelve:

  • (documento)

    Un documento existente o uno recién instanciado.



120
121
122
# Archivo 'lib/mongoid/association/many.rb', línea 120

def find_or_initialize_by(attrs = {}, tipo = nulo, &bloque)
  find_or(compilar, attrs, tipo, &bloque)
end

#nil?false

Este proxy nunca puede ser nulo.

Ejemplos:

¿El proxy es nulo?

relation.nil?

Devuelve:

  • (false)

    Siempre falso.



130
131
132
# Archivo 'lib/mongoid/association/many.rb', línea 130

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_privada (true | false) (por defecto: false)

    Si incluir métodos privados.

Devuelve:

  • (true | false)

    Si el proxy responde al método.



143
144
145
146
# Archivo 'lib/mongoid/association/many.rb', línea 143

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

#scopedCriterios

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

Ejemplos:

Obtén la asociación delimitada.

relation.scoped

Devuelve:



154
155
156
# Archivo 'lib/mongoid/association/many.rb', línea 154

def delimitado
  criterios
end

#serializable_hash(options = {}) ⇒ Hash

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

Ejemplos:

Obtén el hash serializable.

relation.serializable_hash

Parámetros:

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

    Las opciones a pasar.

Opciones Hash (options):

  • except (Símbolo | String | Array<Símbolo | String>)

    No incluya este(s) campo(s).

  • incluir (Símbolo | String | Array<Símbolo | String>)

    Qué asociación(es) incluir.

  • :solo (Símbolo | String | Array<Símbolo | String>)

    Limita el(los) campo(s) solo a estos.

Devuelve:

  • (encriptada)

    Los documentos, listos para la serialización.



172
173
174
# Archivo 'lib/mongoid/association/many.rb', línea 172

def serializable_hash(opciones = {})
  _target.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:



183
184
185
# Archivo 'lib/mongoid/association/many.rb', línea 183

def sin ámbito
  criterios.sin ámbito
end