Módulo: Mongoid::Association::Builders

Estendido por:
ActiveSupport::Concern
Incluído em:
Mongoid::Associação
Definido em:
lib/mongoid/association/builders.rb

Visão geral

Este módulo é responsável por definir os métodos de construção e criação usados em associações um para um.

Exemplos:

Métodos que são criados.


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" })

Recolhimento do Resumo do método de classe

Detalhes do método de classe

.define_builder!(associação) ⇒ Classe

Define um método de construtor. Isso é definido como #build_name.

Exemplos:

Person.define_builder!(association)

Parâmetros:

Retorna:

  • (Classe)

    A classe que está sendo configurada.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Arquivo 'lib/mongoid/association/construtores.rb', linha 47

def auto.define_builder!(associação)
  associação.inverse_class.toque fazer |classe|
    classe.re_define_method("build_#{associação.name}") fazer |*Args|
      attributes, type, _opts = parse_args(Args)

      documento = Factory.execute_build(type || associação.concern_class, attributes, execute_callbacks: false)
      _construção fazer
        criança = enviar("#{associação.name}=", documento)
        criança.run_pending_callbacks
        criança.run_callbacks(:build)
        criança
      end
    end
  end
end

.define_creater!(associação) ⇒ Classe

Define um método de criador. Isto é definido como #create_name. Depois que o objeto for construído, ele será salvo imediatamente.

Exemplos:

Person.define_creator!(association)

Parâmetros:

Retorna:

  • (Classe)

    A classe que está sendo configurada.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Arquivo 'lib/mongoid/association/construtores.rb', linha 72

def auto.define_creater!(associação)
  associação.inverse_class.toque fazer |classe|
    classe.re_define_method("create_#{associação.name}") fazer |*Args|
      attributes, type, _opts = parse_args(Args)

      documento = Factory.execute_build(type || associação.concern_class, attributes, execute_callbacks: false)
      doc = _assigning fazer
        enviar("#{associação.name}=", documento)
      end
      doc.run_pending_callbacks
      doc.Salvar
      Salvar se new_record? && associação.stores_foreign_key?
      doc
    end
  end
end