Module: Mongoid::Document::ClassMethods
- Defined in:
- lib/mongoid/document.rb
Overview
Class-level methods for Document objects.
Instance Method Summary collapse
-
#_mongoid_clear_types ⇒ Object
private
Clear the @_type cache.
-
#_types ⇒ Array<Class>
Returns all types to query for when using this class as the base.
-
#construct_document(attrs = nil, options = {}) ⇒ Document
private
Allocates and constructs a document.
-
#i18n_scope ⇒ Symbol
Set the i18n scope to overwrite ActiveModel.
-
#instantiate(attrs = nil, selected_fields = nil, &block) ⇒ Document
Instantiate a new object, only when loaded from the database or when the attributes have already been typecast.
-
#instantiate_document(attrs = nil, selected_fields = nil, options = {}) {|Mongoid::Document| ... } ⇒ Document
private
Instantiate the document.
-
#logger ⇒ Logger
Returns the logger.
-
#with_callbacks(execute_callbacks) ⇒ Object
Indicate whether callbacks should be invoked by default or not, within the block.
Instance Method Details
#_mongoid_clear_types ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Clear the @_type cache. This is generally called when changing the discriminator key/value on a class.
488 489 490 491 |
# File 'lib/mongoid/document.rb', line 488 def _mongoid_clear_types @_types = nil superclass._mongoid_clear_types if hereditary? end |
#_types ⇒ Array<Class>
Returns all types to query for when using this class as the base.
477 478 479 |
# File 'lib/mongoid/document.rb', line 477 def _types @_types ||= (descendants + [ self ]).uniq.map(&:discriminator_value) end |
#construct_document(attrs = nil, options = {}) ⇒ Document
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A Ruby 2.x bug prevents the options hash from being keyword arguments. Once we drop support for Ruby 2.x, we can reimplement the options hash as keyword arguments. See bugs.ruby-lang.org/issues/15753
Allocates and constructs a document.
466 467 468 469 |
# File 'lib/mongoid/document.rb', line 466 def construct_document(attrs = nil, = {}) execute_callbacks = .fetch(:execute_callbacks, Threaded.execute_callbacks?) with_callbacks(execute_callbacks) { new(attrs) } end |
#i18n_scope ⇒ Symbol
Set the i18n scope to overwrite ActiveModel.
496 497 498 |
# File 'lib/mongoid/document.rb', line 496 def i18n_scope :mongoid end |
#instantiate(attrs = nil, selected_fields = nil, &block) ⇒ Document
Instantiate a new object, only when loaded from the database or when the attributes have already been typecast.
411 412 413 |
# File 'lib/mongoid/document.rb', line 411 def instantiate(attrs = nil, selected_fields = nil, &block) instantiate_document(attrs, selected_fields, &block) end |
#instantiate_document(attrs = nil, selected_fields = nil, options = {}) {|Mongoid::Document| ... } ⇒ Document
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A Ruby 2.x bug prevents the options hash from being keyword arguments. Once we drop support for Ruby 2.x, we can reimplement the options hash as keyword arguments.
Instantiate the document.
435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/mongoid/document.rb', line 435 def instantiate_document(attrs = nil, selected_fields = nil, = {}, &block) execute_callbacks = .fetch(:execute_callbacks, Threaded.execute_callbacks?) attributes = attrs&.to_h || {} doc = allocate doc.__selected_fields = selected_fields doc.instance_variable_set(:@attributes, attributes) doc.instance_variable_set(:@attributes_before_type_cast, attributes.dup) doc._handle_callbacks_after_instantiation(execute_callbacks, &block) doc. doc end |
#logger ⇒ Logger
Returns the logger
506 507 508 |
# File 'lib/mongoid/document.rb', line 506 def logger Mongoid.logger end |
#with_callbacks(execute_callbacks) ⇒ Object
Indicate whether callbacks should be invoked by default or not, within the block. Callbacks may always be explicitly invoked by passing ‘execute_callbacks: true` where available.
392 393 394 395 396 397 398 |
# File 'lib/mongoid/document.rb', line 392 def with_callbacks(execute_callbacks) saved, Threaded.execute_callbacks = Threaded.execute_callbacks?, execute_callbacks yield ensure Threaded.execute_callbacks = saved end |