Módulo: Mongoid::Association::Builders

Ampliado por:
ActiveSupport::Concern
Incluido en:
Mongoid::Association
Definido en:
lib/mongoid/association/builders.rb

Overview

Este módulo es responsable de definir las métodos de construcción y creación que se utilizan en las asociaciones uno a uno.

Ejemplos:

Métodos que se crean.


class Person
  include Mongoid::Document
  embeds_one :name
end

# The following methods get created:
person.build_name({ :first_name => "Durran" })
person.create_name({ :first_name => "Durran" })

Resumen del método de clase colapsar

Detalles del método de clase

.define_builder!(asociación) ⇒ Clase

Define un método builder. Esto se define como #build_name.

Ejemplos:

Person.define_builder!(association)

Parámetros:

Devuelve:

  • (clase)

    La clase se está configurando.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Archivo 'lib/mongoid/association/desarrolladores.rb', línea 47

def sí mismo.define_builder!(asociación)
  asociación.clase_inversa.tocar hacer |klass|
    klass.re_define_method("build_#{association.nombre}") hacer |*args|
      atributos, tipo, _opts = parse_args(args)

      Documento = Fábrica.execute_build(tipo || asociación.relation_class, atributos, execute_callbacks: false)
      _edificio hacer
        niño = enviar("#{asociación.nombre}=", Documento)
        niño.ejecutar_llamadas_pendientes
        niño.run_callbacks(compilar)
        niño
      end
    end
  end
end

.define_creator!(association) ⇒ Class

Define un método de creador. Esto se define como #create_name. Después de que se compile el objeto, este se guardará inmediatamente.

Ejemplos:

Person.define_creator!(association)

Parámetros:

Devuelve:

  • (clase)

    La clase se está configurando.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Archivo 'lib/mongoid/association/desarrolladores.rb', línea 72

def sí mismo.define_creator!(asociación)
  asociación.clase_inversa.tocar hacer |klass|
    klass.re_define_method("创作_#{协会.名称}") hacer |*args|
      atributos, tipo, _opts = parse_args(args)

      Documento = Fábrica.execute_build(tipo || asociación.relation_class, atributos, execute_callbacks: false)
      doc = asignando hacer
        enviar("#{asociación.nombre}=", Documento)
      end
      doc.ejecutar_llamadas_pendientes
      doc.guardar
      guardar si nuevo_registro? && asociación.¿stores_foreign_key?
      doc
    end
  end
end