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.
44 45 46 |
# Arquivo 'lib/mongoid/traversable.rb', linha 44 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.
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 .
53 54 55 56 57 58 |
# Arquivo 'lib/mongoid/traversable.rb', linha 53 def root_class Raiz = auto Raiz = Raiz.superclasse enquanto Raiz.hereditário? Raiz end |