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
-
#hereditário? ➤ verdadeiro | false
Determina se o documento é uma subclasse de outro documento.
-
#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.
-
#root_class ➤ Mongoid::Document
Retorna a classe raiz da árvore STI da qual a classe atual participa.
Detalhes do método de instância
#hereditário? ➤ verdadeiro | false
Determina se o documento é uma subclasse de outro documento.
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
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_class ➤ Mongoid::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 .
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 |