Módulo: Mongoid::Document

Estendido por:
ActiveSupport::Concern
Inclui:
Composto, tocável::InstanceMethods
Incluído em:
Comentário, GlobalDiscriminatorKeyAssignment::InvalidFieldHost, Post
Definido em:
lib/mongoid/ documento.rb

Visão geral

Esse é o módulo base para todos os objetos de domínio que precisam ser mantidos no banco de dados como documentos.

Definido sob namespace

Módulos: Métodos de classe

Colapsode resumo constante

ILLEGAL_KEY =

Regex para corresponder chaves BSON ilegais. Observe que o bson 4.1 tem o constante BSON::String::ILLEGAL_KEY que deve ser usado no lugar. Quando o driver Ruby 2.3.0 for lançado e o Mongoid puder ser atualizado para exigir >= 2.3.0, a constante BSON poderá ser usada.

/(\A[$])|(\.)/.congelar

Constantes incluídas no Compose

Componível::MODULES, Componível::RESERVED_METHOD_NAMES

Constantes incluídas do Interceptable

Interceptável::CALLBACKS

Constantes incluídas da associação

Associação::MACRO_MAPPING

Constantes incluídas de Associação::Dependendo

Associação::Dependendo::estratégias

Constantes incluídas do Persistable

Persistente::LIST_OPERATIONS

Constantes incluídas de Campos

Campos::Boolean, Campos::IDS, Campos::INVALID_BSON_CLASSES, Campos::StringifiedSymbol, Campos::TYPE_MAPPINGS

Constantes incluídas do Atomic

Atomic::UPDATES

Recolhimento do Resumo do atributo de instância

Atributos incluídos de Stateful

#destroyed, #flog_for_destroy, #previously_new_record

Atributos incluídos da associação

#_association

Atributos incluídos de Atributos

#attributes

Atributos incluídos de Clientes::StorageOptions

#remembered_storage_options

Recolhimento do Resumo do método de instância

Métodos incluídos do Tocável::InstanceMethods

., #suppress_toque_callbacks, #toque, #toque_callbacks_suppressed?

Métodos incluídos do Composable

returned_methods

Métodos incluídos da equalização

#, #==, #eql?

Métodos incluídos em Copyable

#clone

Métodos incluídos no Interceptable

, #in_callback_state? , #pending_callbacks, #pending_callbacks=, #run_after_callbacks, #run_before_callbacks, #run_callbacks, #run_pending_callbacks

Métodos incluídos no Validable

#begin_validate, #exit_validate, #performing_validations?, #read_attribute_for_validation, #valid?, #validado?, #validating_with_query?

Métodos incluídos do Traversable

#_children, #_descendentes, #_parent, #_parent=, #_reset_memoized_descendentes!, #_root, #_root?, #collect_children, #collect_descendentes, #marca_descendentes_persisted, #heredityary?, #parentize, #remove_child, #reset_persisted_descendentes

Métodos incluídos no Cacheable

#cache_key

Métodos incluídos do Stateful

#destruído?, #flog_for_destroy?, #new_record=, #new_record?, #persistiu?, #previously_new_record?, #previously_persisted?, #pushable?, #readonly!, #readonly?, #settable?, #atualizável?

Métodos incluídos no Shardable

#shard_key_field_value, #shard_key_fields, #shard_key_selector, #shard_key_selector_in_db

Métodos incluídos do Serializable

#serializable_hash

Métodos incluídos em Selectable

#atomic_selector

Métodos incluídos no Reloadable

#reload

Métodos incluídos da associação

#association_name, #embedded?, #embedded_many?, #embedded_one?, #referenced_many?, #referenced_one?, #reload_relations

Métodos incluídos da associação::reflexões

#reflect_on_all_association, #reflect_on_association

Métodos incluídos da associação::macros

#associations

Métodos incluídos de Associação::Dependendo

#apply_destroy_dependencies!, define_dependency!, valide!

Métodos incluídos de Associação::Accessors

#__build__, #create_relation, #reset_relation_criteria, #set_relation

Métodos incluídos de Associação::Referenciado::Syncable

#_syncable?, #_synced, #_synced?, #remove_inverse_keys, #update_inverse_keys

Métodos incluídos de Federation::Referenced::CounterCache

define_callbacks!, #reset_counters

Métodos incluídos de Associação::Referenciado::AutoSave

#__autosaving__, #autosaved?, #changed_for_autosave?, define_autosave!

Métodos incluídos no Persistable

#atomicly, #fail_duce_to_callback!, #fail_ue_to_validation!

Métodos incluídos no Persistable::Unsettable

#unset

Métodos incluídos do Persistable::Upsertable

#upsert

Métodos incluídos no Persistable::Updatable

#update, #update!, #update_attribute

Métodos incluídos do Persistable::Settable

#set

Métodos incluídos no Persistable::Sovable

#save, #save!

Métodos incluídos no Persistable::Renamable

#rename

Métodos incluídos no Persistable::Pushable

#add_to_set, #push

Métodos incluídos no Persistable::Pullable

#pull, #pull_all

Métodos incluídos no Posicional

#positionalmente

Métodos incluídos no Persistable::Poppable

#pop

Métodos incluídos no Persistable::Multipliable

#mul

Métodos incluídos no Persistable::Minable

#set_min

Métodos incluídos no Persistable::Maxable

#set_max

Métodos incluídos no Persistable::Logical

#bit

Métodos incluídos no Persistable::Incrementable

#inc

Métodos incluídos no Persistable::Destroyable

#destroy, #destroy!

Métodos incluídos no Persistable::Deletable

#delete

Métodos incluídos no Persistable::Creatable

#insert

Métodos incluídos do Matchable

#_matches?

Métodos incluídos dos Campos

#apply_default, #apply_defaults, #apply_post_processed_defaults, #apply_pre_processed_defaults, #attribute_names, database_field_name, #database_field_name, #dot_dollar_field?, #lazy_settable?, opção, opções, traverse_association_tree, #using_object_ids?, #validate_write_field_name!

Métodos incluídos no Evolvable

#__evolve_object_id__

Métodos incluídos dos Atributos

#assign_attributes, #attribute_missing?, #attribute_present?, #attributes_before_type_cast, #has_attribute?, #has_attribute_before_type_cast?, #process_raw_attribute, #read_attribute, #read_attribute_before_type_cast, #remove_attribute, #typed_attributes, #write_attribute, #write_attributes

Métodos incluídos de Attributes::Readonly

#attribute_writeable?

Métodos incluídos de Attributes::Processing

#process_attributes

Métodos incluídos dos clientes

limpar, clientes, padrão, desconectar, definir, with_name

Métodos incluídos de Clientes::Sessions

incluído

Métodos incluídos dos Clientes::Opções

#collection, #collection_name, #mongo_client, #persistence_context, #persistence_context?, #com

Métodos incluídos de Clients::StorageOptions

#remember_storage_options!, #storage_options

Métodos incluídos no Changeable

#attribute_before_last_save, #changed, #changed?, #changed_attributes, #changes, #children_changed?, #move_changes, #post_persist, #previous_changes, #remove_change, #saved_change_to_attribute, #saved_change_to_attribute?, #setters, # will_save_change_to_attribute?

Métodos incluídos do Atomic

#add_atomic_pull, #add_atomic_unset, #atomic_array_add_to_sets, #atomic_array_pulls, #atomic_array_pushes, #atomic_attribute_name, #atomic_delete_modifier, #atomic_insert_modifier, #atomic_path, #atomic_paths, #atomic_position, #atomic_pulls, #atomic_pushes, #atomic_sets, #atomic_unsets, #atomic_updates, #delayed_atomic_pulls, #delayed_atomic_sets, #delayed_atomic_unsets, #marca_as_destroyed, #primaged_destroys, #process_lagaged_destroys

Detalhes do atributo da instância

#__selected_fields ➤ Objeto

Retorna o valor do atributo __selected_fields.



29
30
31
# Arquivo 'lib/mongoid/ documento.rb', linha 29

def __selected_fields
  @__selected_fields
end

#new_record ➤ Object (somente leitura)

Retorna o valor do atributo new_record.



30
31
32
# Arquivo 'lib/mongoid/ documento.rb', linha 30

def new_record
  @new_record
end

Detalhes do método de instância

#_handle_callbacks_after_instanciation(execute_callbacks) ➤ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Lida com a configuração e execução de retornos de chamada, se os retornos de chamada forem para ser executados; caso contrário, adiciona as chamadas de resposta apropriadas à lista de chamadas de resposta pendentes.

Parâmetros:

  • execute_callbacks (verdadeiro | falso)

    Se as chamadas de resposta devem ser executadas ou não.



211
212
213
214
215
216
217
218
219
220
221
# Arquivo 'lib/mongoid/ documento.rb', linha 211

def _handle_callbacks_after_instanciation(execute_callbacks)
  se execute_callbacks
    apply_defaults
    rendimento auto se block_given?
    run_callbacks(:find) a menos que _find_callbacks.vazio?
    run_callbacks(:initialize) a menos que _initialize_callbacks.vazio?
  mais
    rendimento auto se block_given?
    auto.pending_callbacks += %i[ apply_defaults find inicializar ]
  end
end

#as_document ➤ Hash

Retorne um hash de toda a hierarquia do documento a partir deste documento e abaixo. Usado quando os atributos são necessários para tudo e não apenas para o documento atual.

Exemplos:

Obtenha a hierarquia completa.

person.as_document

Retorna:

  • (Hash)

    Um hash de todos os atributos na hierarquia.



134
135
136
# Arquivo 'lib/mongoid/ documento.rb', linha 134

def as_document
  BSON::Documento.Novo(as_attributes)
end

#as_json(options = nil) ⇒ Hash

Observação:

Rails 6 altera o valor de retorno de as_json para tipos não primitivos, como BSON::ObjectId. Em Rails <= 5, as_json retornou estes como instâncias da classe. Em Rails 6, estes são retornados serializados para tipos primitivos (por exemplo '$oid'=>' 5bcfc40bde340b37feda98e9'). Consulte github.com/rails/rails/commit/2e5cb980a448e7f4ab00df6e9ad4c1cc456616aa para mais informações.

Chama #as_json no documento com opções adicionais específicas do Mongoid.

Exemplos:

Obtenha o documento como JSON.

document.as_json(compact: true)

Parâmetros:

  • opções (Hash) (padrão para: nil)

    As opções.

Hash de opções (opções):

  • :compac (verdadeiro | falso) — padrão: obsoleto

    Se incluir campos com valores nulos no documento JSON .

Retorna:

  • (Hash)

    O documento como JSON.



156
157
158
159
160
161
162
163
# Arquivo 'lib/mongoid/ documento.rb', linha 156

def as_json(opções = nada)
  rv = super
  se opções && opções[:compac]
    Mongoid::Avisos.write_as_json_compact_deprecated
    rv = rv.compactar
  end
  rv
end

#torna -se (klass) ➤ Documento

Retorna uma instância da classe especificada com os atributos, erros e documentos incorporados do documento atual.

Exemplos:

Retornar um documento de subclasse como uma instância de superclasse.

manager.becomes(Person)

Parâmetros:

  • classe (Classe)

    A classe para se tornar.

Retorna:

  • (Documento)

    Uma instância da classe especificada.

Aumenta:

  • (ArgumentError)

    Se a classe não incluir Mongoid::Document



176
177
178
179
180
181
182
183
# Arquivo 'lib/mongoid/ documento.rb', linha 176

def torna-se(classe)
  mongoid_document_check!(classe)

  tornou-se = classe.Novo(clone_document)
  tornou-se.internal_state = internal_state

  tornou-se
end

#freezeDocument

Congela os atributos internos do documento.

Exemplos:

Congelar o documento

document.freeze

Retorna:



49
50
51
# Arquivo 'lib/mongoid/ documento.rb', linha 49

def congelar
  as_attributes.congelar e a auto
end

#frozen?true | false

Verifica se o documento está congelado

Exemplos:

Check if frozen

document.frozen?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se congelado, caso contrário falso.



59
60
61
# Arquivo 'lib/mongoid/ documento.rb', linha 59

def congelado?
  attributes.congelado?
end

#hashinteiro

Delega à identidade para permitir que dois registros da mesma identidade funcionem com algo como:

[ Person.find(1), Person.find(2), Person.find(3) ] &
[ Person.find(1), Person.find(4) ] # => [ Person.find(1) ]

Exemplos:

Obtenha o hash.

document.hash

Retorna:

  • (Inteiro)

    O hash da identidade do documento.



73
74
75
# Arquivo 'lib/mongoid/ documento.rb', linha 73

def hash
  identidade.hash
end

#identityArray

Um documento é identificado absolutamente por sua classe e ID do banco de dados:

Person.first.identity #=> [Pessoa, BSON::ObjectId(' 4f775130a04745933a000003')]

Exemplos:

Obter a identidade

document.identity

Retorna:

  • (Array)

    Uma array contendo [documento. classe, documento._id]



85
86
87
# Arquivo 'lib/mongoid/ documento.rb', linha 85

def identidade
  [ auto.classe, _id ]
end

#initialize(attrs = nil, &block) ➤ Documento

Instancie um novo Document, definindo os atributos do documento, se fornecidos. Se nenhum atributo for fornecido, eles serão inicializados com um Hash vazio.

Se uma chave primária for definida, o ID do documento será definido para essa chave, caso contrário, será definido para uma nova string BSON::ObjectId .

Exemplos:

Criar um novo documento.

Person.new(:title => 'Sir')

Parâmetros:

  • attrs (Hash) (padrão para: nil)

    Os atributos com os quais configurar o documento .

Retorna:



102
103
104
# Arquivo 'lib/mongoid/ documento.rb', linha 102

def inicializar(attrs = nada, &noum: bloco ; verb: bloquear)
  construct_document(attrs, &noum: bloco ; verb: bloquear)
end

#internal_state=(estado) ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Define o estado interno deste documento. Usado somente por #becomes para ajudar a inicializar um documento redefinido.

Parâmetros:

  • state (Hash)

    O mapa dos valores internos do estado.



191
192
193
194
195
196
197
198
199
200
201
# Arquivo 'lib/mongoid/ documento.rb', linha 191

def internal_state=(state)
  auto._id = state[:id]
  @changed_attributes = state[:changed_attributes]
  @errors = ActiveModel::Errors.Novo(auto).toque { |e| e.copie!(state[:errors]) }
  @new_record = state[:new_record]
  @destroyed = state[:destroyed]

  update_discriminator(state[:discriminator_key_was])

  marque_persisted_state_for_embedded_documents(state[:new_record])
end

#model_namestring

Retorne o nome do modelo do documento.

Exemplos:

Retorne o nome do modelo.

document.model_name

Retorna:

  • (string)

    O nome do modelo.



112
113
114
# Arquivo 'lib/mongoid/ documento.rb', linha 112

def model_name
  auto.classe.model_name
end

#to_key ➤ string

Retorne o valor chave do documento.

Exemplos:

Devolva a chave.

document.to_key

Retorna:

  • (string)

    O ID do documento ou nulo se for novo.



122
123
124
# Arquivo 'lib/mongoid/ documento.rb', linha 122

def to_key
  (persistiu? || destruído?) ? [ _id.to_s ] : nada
end