Módulo: Mongoid::Traversable::ClassMethods

Definido em:
lib/mongoid/traversable.rb

Visão geral

Métodos de nível de classe para o comportamento Traversable.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#hereditário?verdadeiro | false

Determina se o documento é uma subclasse de outro documento.

Exemplos:

Verifique se o documento é uma subclasse.

Square.hereditary?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se hereditário, falso se não.



43
44
45
# Arquivo 'lib/mongoid/traversable.rb', linha 43

def hereditário?
  !!(superclasse < Mongoid::Documento)
end

#herdado(subclasse) ➤ Objeto

Ao herdar, queremos copiar os campos da classe pai e definir o filho para iniciar, imitando o comportamento do antigo class_inheritable_accessor que foi preterido na borda do Rails.

rubocop:disable Metrics/AbcSize

Exemplos:

Herdar desta classe.

Person.inherited(Doctor)

Parâmetros:

  • subclasse (Classe)

    A classe herdada.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Arquivo 'lib/mongoid/traversable.rb', linha 69

def herdado(subclasse)
  super

  # Registre a nova subclasse no subsistema do resolvedor
  Mongoid::ModelResolver.register(subclasse)

  @_type = nada
  subclasse.aliased_fields = aliased_fields.dup
  subclasse.campos_localizados = campos_localizados.dup
  subclasse.Campos = Campos.dup
  subclasse.pre_processed_defaults = pre_processed_defaults.dup
  subclasse.post_processed_defaults = post_processed_defaults.dup
  subclasse._declared_scopes = Hash.Novo { |_hash, chave| _declared_scopes[chave] }
  subclasse.discriminator_value = subclasse.name

  # Precisamos fazer isso aqui porque o método discriminator_value é
  # substituído na subclasse acima.
  subclasse.Incluir DiscriminatorRetrieval

  # Só precisamos do campo _type se a herança estiver em jogo, mas precisamos
  # adicione à classe raiz também para compatibilidade com versões anteriores.
  Método se Campos.chave?(discriminator_key)

  default_proc = -> { auto.classe.discriminator_value }
  Campo(discriminator_key, padrão: default_proc, tipo: String)
end

#root_classMongoid::Document

Retorna a classe raiz da árvore STI da qual a classe atual participa. Se a classe não for uma subclasse STI, isso retornará a própria classe .

Retorna:



52
53
54
55
56
57
# Arquivo 'lib/mongoid/traversable.rb', linha 52

def root_class
  Raiz = auto
  Raiz = Raiz.superclasse enquanto Raiz.hereditário?

  Raiz
end