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.
463 464 465 466 |
# File 'lib/mongoid/document.rb', line 463 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.
452 453 454 |
# File 'lib/mongoid/document.rb', line 452 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.
441 442 443 444 |
# File 'lib/mongoid/document.rb', line 441 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.
471 472 473 |
# File 'lib/mongoid/document.rb', line 471 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.
386 387 388 |
# File 'lib/mongoid/document.rb', line 386 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.
410 411 412 413 414 415 416 417 418 419 420 421 422 423 |
# File 'lib/mongoid/document.rb', line 410 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
481 482 483 |
# File 'lib/mongoid/document.rb', line 481 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.
367 368 369 370 371 372 373 |
# File 'lib/mongoid/document.rb', line 367 def with_callbacks(execute_callbacks) saved, Threaded.execute_callbacks = Threaded.execute_callbacks?, execute_callbacks yield ensure Threaded.execute_callbacks = saved end |