Module: Mongoid::Composable
Overview
This module provides inclusions of all behavior in a ::Mongoid
document.
Constant Summary
-
MODULES =
# File 'lib/mongoid/composable.rb', line 70[ Atomic, Attributes, Copyable, Changeable, Evolvable, Fields, Indexable, Inspectable, Interceptable, Matchable, Persistable, Association, Reloadable, Scopable, Serializable, Clients, Clients::Options, Shardable, Stateful, Cacheable, Threaded::Lifecycle, Traversable, Validatable, Equality, Association::Referenced::Syncable, Association::Macros, ActiveModel::Model, ActiveModel::Validations ]
-
RESERVED_METHOD_NAMES =
These are methods names defined in included blocks that may conflict with user-defined association or field names. They won’t be in the list of Module.instance_methods on which the #prohibited_methods code below is dependent so we must track them separately.
[ :fields, :aliased_fields, :localized_fields, :index_specifications, :shard_key_fields, :nested_attributes, :readonly_attributes, :, :cascades, :cyclic, : ]
Interceptable
- Included
Association::Depending
- Included
Association
- Included
Persistable
- Included
Fields
- Included
Boolean, IDS, INVALID_BSON_CLASSES, StringifiedSymbol, TRANSLATIONS_SFX, TYPE_MAPPINGS
Clients
- Included
Changeable
- Included
Atomic
- Included
Association
- Attributes & Methods
Atomic
- Attributes & Methods
Cacheable
- Attributes & Methods
- .cache_timestamp_format (also: #cache_timestamp_format) rw
- #cache_timestamp_format readonly
Encryptable
- Attributes & Methods
Fields
- Attributes & Methods
- .aliased_fields rw
- #aliased_fields rw
- .aliased_fields? ⇒ Boolean rw
- #aliased_fields? ⇒ Boolean rw
- .fields rw
- #fields rw
- .fields? ⇒ Boolean rw
- #fields? ⇒ Boolean rw
- #id rw
- #id? ⇒ Boolean rw
- .localized_fields rw
- #localized_fields rw
- .localized_fields? ⇒ Boolean rw
- #localized_fields? ⇒ Boolean rw
- .post_processed_defaults rw
- #post_processed_defaults rw
- .post_processed_defaults? ⇒ Boolean rw
- #post_processed_defaults? ⇒ Boolean rw
- .pre_processed_defaults rw
- #pre_processed_defaults rw
- .pre_processed_defaults? ⇒ Boolean rw
- #pre_processed_defaults? ⇒ Boolean rw
Indexable
- Attributes & Methods
- .index_specifications (also: #index_specifications) rw
- #index_specifications rw
Interceptable
- Attributes & Methods
Scopable
- Attributes & Methods
SearchIndexable
- Attributes & Methods
- .search_index_specs (also: #search_index_specs) rw
- #search_index_specs rw
Serializable
- Attributes & Methods
Shardable
- Attributes & Methods
-
.shard_config ⇒ Hash | nil
(also: #shard_config)
rw
Returns the shard configuration, which is a hash with the following (symbol) keys:
- #shard_config rw
-
.shard_key_fields ⇒ Array<Symbol>
(also: #shard_key_fields)
rw
Returns the list of shard key fields, if shard key was declared on this model.
- #shard_key_fields rw
Traversable
- Attributes & Methods
-
.add_discriminator_mapping(value, klass = self)
Internal use only
Internal use only
Add a discriminator mapping to the parent class.
- .discriminator_key rw
- #discriminator_key readonly
- .discriminator_key? ⇒ Boolean rw
- .discriminator_mapping ⇒ Hash<String, Class> rw Internal use only Internal use only
-
.get_discriminator_mapping(value) ⇒ Class | nil
Internal use only
Internal use only
Get the discriminator mapping from the parent class.
Class Attribute Summary
Clients::Sessions::ClassMethods
- Extended
in_transaction? | This method should be used to detect whether a persistence operation is executed inside transaction or not. |
Fields::ClassMethods
- Extended
using_object_ids? | Convenience method for determining if we are using |
Scopable::ClassMethods
- Extended
default_scopable? | Is the class able to have the default scope applied? |
Traversable::ClassMethods
- Extended
hereditary? | Determines if the document is a subclass of another document. |
Validatable::ClassMethods
- Extended
validating_with_query? | Are we currently performing a validation that has a query? |
Encryptable::ClassMethods
- Extended
encrypted? | Whether the model is encrypted. |
Class Method Summary
-
.prohibited_methods ⇒ Array<Symbol>
Get a list of methods that would be a bad idea to define as field names or override when including
Document
.
Changeable::ClassMethods
- Extended
create_dirty_change_accessor | Creates the dirty change accessor. |
create_dirty_change_check | Creates the dirty change check. |
create_dirty_change_flag | Creates the dirty change flag. |
create_dirty_default_change_check | Creates the dirty default change check. |
create_dirty_methods | Generate all the dirty methods needed for the attribute. |
create_dirty_previous_change | Creates the dirty change accessor. |
create_dirty_previous_value_accessor | Creates the dirty change previous value accessors. |
create_dirty_previously_changed? | Creates the dirty change check. |
create_dirty_reset | Creates the dirty change reset. |
create_dirty_reset_to_default | Creates the dirty change reset to default. |
Clients::Sessions::ClassMethods
- Extended
after_commit | Sets up a callback is called after a commit of a transaction. |
after_create_commit | Shortcut for after_commit |
after_destroy_commit | Shortcut for after_commit |
after_rollback | This callback is called after a create, update, or destroy are rolled back. |
after_save_commit | Shortcut for after_commit |
after_update_commit | Shortcut for after_commit |
transaction | Executes a block within the context of a transaction. |
with_session | Execute a block within the context of a session. |
_session, | |
assert_valid_transaction_action | Asserts that the given actions are valid for after_commit and after_rollback callbacks. |
run_abort_callbacks | Runs after_rollback callbacks on modified documents. |
run_commit_callbacks | Runs after_commit callbacks on modified documents. |
set_options_for_callbacks! | Transforms custom options for after_commit and after_rollback callbacks into options for |
transaction_include_any_action?, | |
transactions_not_supported_exceptions | Driver version 2.20 introduced a new exception for reporting that transactions are not supported. |
Clients::Options::ClassMethods
- Extended
client_name | Get the database client name for the current persistence context of the document class. |
collection | Get the collection for the current persistence context of the document class. |
collection_name | Get the collection name for the current persistence context of the document class. |
database_name | Get the database name for the current persistence context of the document class. |
mongo_client | Get the client for the current persistence context of the document class. |
persistence_context | Get the current persistence context of the document class. |
with | Change the persistence context for this class during the block. |
Clients::StorageOptions::ClassMethods
- Extended
reset_storage_options! | Reset the store_in options. |
storage_options_defaults | Get the default storage options. |
store_in | Give this model specific custom default storage options. |
CollectionConfigurable::ClassMethods
- Extended
create_collection | Create the collection for the called upon |
Attributes::ClassMethods
- Extended
alias_attribute | Alias the provided name to the original field. |
unalias_attribute | Removes a field alias. |
Attributes::Readonly::ClassMethods
- Extended
attr_readonly | Defines an attribute as readonly. |
Attributes::Nested::ClassMethods
- Extended
accepts_nested_attributes_for | Used when needing to update related models from a parent association. |
autosave_nested_attributes | Add the autosave information for the nested association. |
Fields::ClassMethods
- Extended
attribute_names | Returns an array of names for the attributes available on this object. |
cleanse_localized_field_names | Removes the _translations from the given field name. |
database_field_name | Get the name of the provided field as it is stored in the database. |
extract_id_field | Extracts the id field from the specified attributes hash based on aliases defined in this class. |
field | |
id_fields | Returns the list of id fields for this model class, as both strings and symbols. |
replace_field | Replace a field with a new type. |
traverse_association_tree | Traverse down the association tree and search for the field for the given key. |
Indexable::ClassMethods
- Extended
add_indexes | Add the default indexes to the root document if they do not already exist. |
create_indexes | Send the actual index creation comments to the MongoDB driver. |
index | Adds an index definition for the provided single or compound keys. |
index_specification | Get an index specification for the provided key. |
remove_indexes | Send the actual index removal comments to the MongoDB driver, but lets _id untouched. |
index_keys | Gets a list of index specification keys. |
indexed_database_names | Get the names of all databases for this model that have index definitions. |
Persistable::Destroyable::ClassMethods
- Extended
destroy_all | Delete all documents given the supplied conditions. |
Persistable::Deletable::ClassMethods
- Extended
delete_all | Delete all documents given the supplied conditions. |
Persistable::Creatable::ClassMethods
- Extended
Association::Reflections::ClassMethods
- Extended
reflect_on_all_associations | Returns all association metadata for the supplied macros. |
reflect_on_association | Returns the association metadata for the supplied name. |
Association::Macros::ClassMethods
- Extended
belongs_to | |
embedded_in | Adds the association back to the parent document. |
embeds_many | Adds the association from a parent document to its children. |
embeds_one | Adds the association from a parent document to its child. |
has_and_belongs_to_many | |
has_many | Adds a referenced association from a parent |
has_one | |
define_association! |
Association::Referenced::Syncable::ClassMethods
- Extended
_synced |
|
synced_destroy |
|
synced_save |
|
Association::Referenced::CounterCache::ClassMethods
- Extended
decrement_counter | Decrement the counter name from the entries that match the id by one. |
increment_counter | Increment the counter name from the entries that match the id by one. |
reset_counters | Reset the given counter using the .count() query from the db. |
update_counters | Update the given counters by the value factor. |
Association::Embedded::Cyclic::ClassMethods
- Extended
recursively_embeds_many | Create a cyclic embedded association that creates a tree hierarchy for the document and many embedded child documents. |
recursively_embeds_one | Create a cyclic embedded association that creates a single self referencing relationship for a parent and a single child. |
cyclic_child_name | Determines the child name given the class. |
cyclic_parent_name | Determines the parent name given the class. |
Scopable::ClassMethods
- Extended
criteria | Alias for Scopable::ClassMethods#with_default_scope. |
default_scope | Add a default scope to the model. |
queryable | Get a queryable, either the last one on the scope stack or a fresh one. |
scope | Create a scope that can be accessed from the class level or chained to criteria by the provided name. |
scoped | Get a criteria for the document with normal scoping. |
scopes | Returns a hash of all the scopes defined for this class, including scopes defined on ancestor classes. |
unscoped | Get the criteria without any scoping applied. |
with_default_scope | Get a criteria with the default scope applied, if possible. |
with_scope | Pushes the provided criteria onto the scope stack, and removes it after the provided block is yielded. |
without_default_scope | Execute the block without applying the default scope. |
check_scope_name | Warns or raises exception if overriding another scope or method. |
check_scope_validity | Checks if the intended scope is a valid object, either a criteria or proc with a criteria. |
define_scope_method | Defines the actual class method that will execute the scope when called. |
process_default_scope | Process the default scope value. |
SearchIndexable::ClassMethods
- Extended
create_search_indexes | Request the creation of all registered search indices. |
remove_search_index | Removes the search index specified by the given name or id. |
remove_search_indexes | Request the removal of all registered search indexes. |
search_index | Adds an index definition for the provided single or compound keys. |
search_indexes | A convenience method for querying the search indexes available on the current model’s collection. |
wait_for_search_indexes | Waits for the named search indexes to be created. |
get_indexes | Retrieves the index records for the indexes with the given names. |
Shardable::ClassMethods
- Extended
shard_key | Specifies a shard key with the field(s) specified. |
Threaded::Lifecycle::ClassMethods
- Extended
_creating | Execute a block in creating mode. |
Traversable::ClassMethods
- Extended
inherited | When inheriting, we want to copy the fields from the parent class and set the on the child to start, mimicking the behavior of the old class_inheritable_accessor that was deprecated in |
Validatable::ClassMethods
- Extended
validates_relation | Adds an associated validator for the association if the validate option was not provided or set to true. |
validates_with | Add validation with the supplied validators for the provided fields with options. |
Equality::ClassMethods
- Extended
=== | Performs class equality checking. |
Encryptable::ClassMethods
- Extended
encrypt_with |
|
set_key_id | Override the key_id for the model. |
Instance Attribute Summary
Changeable
- Included
#changed | Get the changed attributes for the document. |
#changed? | Has the document changed? |
#children_changed? | Have any children (embedded documents) of this document changed? |
Clients::Options
- Included
#persistence_context | Get the document’s current persistence context. |
#persistence_context? | Returns whether a persistence context is set for the document or the document’s class. |
Clients::StorageOptions
- Included
#remembered_storage_options | Remembers the storage options that were active when the current object was instantiated/created. |
Attributes
- Included
#nested_attributes, #nested_attributes?, | |
#raw_attributes | Alias for Attributes#attributes. |
#readonly_attributes, #readonly_attributes? |
Fields
- Included
#using_object_ids? | Is the document using object ids? |
Persistable
- Included
#executing_atomically? | Are we executing an atomically block on the current document? |
Association
- Included
#_association, #aliased_associations, #aliased_associations?, #cyclic, #cyclic?, #dependents, #dependents?, #dependents_owner, #dependents_owner?, | |
#embedded? | Determine if the document itself is embedded in another document via the proper channels. |
#embedded_many? | Determine if the document is part of an embeds_many association. |
#embedded_one? | Determine if the document is part of an embeds_one association. |
#embedded_relations, #embedded_relations?, | |
#referenced_many? | Determine if the document is part of an references_many association. |
#referenced_one? | Determine if the document is part of an references_one association. |
#relations, #relations?, #stored_as_associations, #stored_as_associations? |
Association::Accessors
- Included
#without_autobuild? | Is the current code executing without autobuild functionality? |
Association::Referenced::AutoSave
- Included
#autosaved? | Used to prevent infinite loops in associated autosaves. |
Stateful
- Included
#_destroy | Alias for Stateful#flagged_for_destroy?. |
#destroyed=, | |
#destroyed? | Returns true if the |
#flagged_for_destroy=, | |
#flagged_for_destroy? | Returns whether or not the document has been flagged for deletion, but not destroyed yet. |
#marked_for_destruction? | Alias for Stateful#flagged_for_destroy?. |
#new_record= | Sets whether the document has been persisted to the database. |
#new_record? | Returns true if the document has not been persisted to the database, false if it has. |
#persisted? | Checks if the document has been saved to the database. |
#previously_new_record=, | |
#previously_new_record? | Returns true if this document was just created – that is, prior to the last save, the object didn’t exist in the database and new_record? would have returned true. |
#previously_persisted? | Checks if the document was previously saved to the database but now it has been deleted. |
#pushable? | Determine if the document can be pushed. |
#readonly? | Is the document readonly? |
#settable? | Determine if the document can be set. |
#updateable? | Is the document updateable? |
Threaded::Lifecycle
- Included
#_assigning | Begin the assignment of attributes. |
#_assigning? | Is the current thread in assigning mode? |
#_binding | Execute a block in binding mode. |
#_binding? | Is the current thread in binding mode? |
#_building | Execute a block in building mode. |
#_building? | Is the current thread in building mode? |
#_creating? | Is the current thread in creating mode? |
#_loading | Execute a block in loading mode. |
#_loading? | Is the current thread in loading mode? |
Traversable
- Included
#_parent | Retrieves the parent document of this document. |
#_parent= | Sets the parent document of this document. |
#_root | Return the root document in the object graph. |
#_root? | Is this document the root document of the hierarchy? |
#hereditary? | Determines if the document is a subclass of another document. |
Validatable
- Included
#validated? | Used to prevent infinite loops in associated validations. |
#validating_with_query? | Are we currently performing a validation that has a query? |
Interceptable
- Included
#pending_callbacks | Returns the stored callbacks to be executed later. |
#pending_callbacks= | Stores callbacks to be executed later. |
#before_callback_halted? | We need to hook into this for autosave, since we don’t want it firing if the before callbacks were halted. |
Instance Method Summary
Atomic
- Included
#_updates | Alias for Atomic#atomic_updates. |
#add_atomic_pull | Add the document as an atomic pull. |
#add_atomic_unset | Add an atomic unset for the document. |
#atomic_array_add_to_sets | For array fields these are the unique adds that need to happen. |
#atomic_array_pulls | For array fields these are the pulls that need to happen. |
#atomic_array_pushes | For array fields these are the pushes that need to happen. |
#atomic_attribute_name | Returns path of the attribute for modification. |
#atomic_delete_modifier | Get the removal modifier for the document. |
#atomic_insert_modifier | Get the insertion modifier for the document. |
#atomic_path | Return the path to this |
#atomic_paths | Get the atomic paths utility for this document. |
#atomic_position | Returns the positional operator of this document for modification. |
#atomic_pulls | Get all the attributes that need to be pulled. |
#atomic_pushes | Get all the push attributes that need to occur. |
#atomic_sets | Get all the attributes that need to be set. |
#atomic_unsets | Get all the attributes that need to be unset. |
#atomic_updates | Get all the atomic updates that need to happen for the current |
#delayed_atomic_pulls | Get a hash of atomic pulls that are pending. |
#delayed_atomic_sets | Get all the atomic sets that have had their saves delayed. |
#delayed_atomic_unsets | Get the delayed atomic unsets. |
#flag_as_destroyed | Flag the document as destroyed and return the atomic path. |
#flagged_destroys | Get the flagged destroys. |
#process_flagged_destroys | Process all the pending flagged destroys from nested attributes. |
#generate_atomic_updates | Generates the atomic updates in the correct order. |
#reset_atomic_updates! | Clears all pending atomic updates. |
Changeable
- Included
#attribute_before_last_save | Returns the original value of an attribute before the last save. |
#attribute_changed? | Determine if a specific attribute has changed. |
#attribute_changed_from_default? | Get whether or not the field has a different value from the default. |
#attribute_previously_was | Get the previous attribute value that was changed before the document was saved. |
#attribute_was | Get the previous value for the attribute. |
#attribute_will_change! | Flag an attribute as going to change. |
#changed_attributes | Get the attribute changes. |
#changes | Get all the changes for the document. |
#move_changes | Call this method after save, so the changes can be properly switched. |
#post_persist | Things that need to execute after a document has been persisted. |
#previous_changes | Get the previous changes on the document. |
#remove_change | Remove a change from the dirty attributes hash. |
#reset_attribute! |
|
#reset_attribute_to_default!, #reset_attributes_before_type_cast, | |
#saved_change_to_attribute | Returns the change to an attribute during the last save. |
#saved_change_to_attribute? | Returns whether this attribute changed during the last save. |
#setters | Gets all the new values for each of the changed fields, to be passed to a MongoDB $set modifier. |
#will_save_change_to_attribute? | Returns whether this attribute change the next time we save. |
#attribute_change | Get the old and new value for the provided attribute. |
#attributes_before_last_save, #changes_before_last_save, | |
#previous_attributes | Get attributes of the document before the document was saved. |
Clients::Sessions
- Included
#ensure_client_compatibility! | If at least one session is active, this ensures that the current model’s client is compatible with one of them. |
Clients::Options
- Included
#collection | Get the collection for the document’s current persistence context. |
#collection_name | Get the collection name for the document’s current persistence context. |
#mongo_client | Get the database client for the document’s current persistence context. |
#with | Change the persistence context for this object during the block. |
#clear_persistence_context, #default_storage_options, #set_persistence_context |
Clients::StorageOptions
- Included
#remember_storage_options! | Saves the storage options from the current persistence context. |
#storage_options | The storage options that apply to this record, consisting of both the class-level declared storage options (e.g. |
Attributes
- Included
#[] | Alias for Attributes#read_attribute. |
#[]= | Alias for Attributes#write_attribute. |
#assign_attributes | Allows you to set all the attributes for a particular mass-assignment security role by passing in a hash of attributes with keys matching the attribute names (which again matches the column names) and the role name using the |
#attribute_missing? | Determine if the attribute is missing from the document, due to loading it from the database with missing fields. |
#attribute_present? | Determine if an attribute is present. |
#attributes, | |
#attributes= | Alias for Attributes#write_attributes. |
#attributes_before_type_cast | Get the attributes that have not been cast. |
#has_attribute? | Does the document have the provided attribute? |
#has_attribute_before_type_cast? | Does the document have the provided attribute before it was assigned and type cast? |
#process_raw_attribute | Process the raw attribute values just read from the documents attributes. |
#read_attribute | Read a value from the document attributes. |
#read_attribute_before_type_cast | Read a value from the attributes before type cast. |
#remove_attribute | Remove a value from the |
#typed_attributes | Return type-casted attributes. |
#write_attribute | Write a single attribute to the document attribute hash. |
#write_attributes | Writes the supplied attributes hash to the document. |
#hash_dot_syntax? | Does the string contain dot syntax for accessing hashes? |
#lookup_attribute_presence, #read_raw_attribute, | |
#typed_value_for | Return the typecasted value for a field. |
Attributes::Readonly
- Included
#attribute_writable? | Are we able to write the attribute with the provided name? |
#_loaded?, #as_writable_attribute!, #projected_field? |
Attributes::Processing
- Included
#process_attributes | Process the provided attributes casting them to their proper values if a field exists for them on the document. |
#pending_attribute? | If the key provided is the name of an association or a nested attribute, we need to wait until all other attributes are set before processing these. |
#pending_nested | Get all the pending nested attributes that need to be set. |
#pending_relations | Get all the pending associations that need to be set. |
#process_attribute | If the attribute is dynamic, add a field for it with a type of object and then either way set the value. |
#process_nested | Process all the pending nested attributes that needed to wait until ids were set to fire off. |
#process_pending | Process all the pending items, then clear them out. |
#process_relations | Process all the pending associations that needed to wait until ids were set to fire off. |
#set_pending_nested |
|
#set_pending_relation |
|
Evolvable
- Included
#__evolve_object_id__ | Evolve the document into an object id. |
Fields
- Included
#apply_default | Applies a single default value for the given name. |
#apply_defaults | Apply all the defaults at once. |
#apply_post_processed_defaults | Apply all default values to the document which are procs. |
#apply_pre_processed_defaults | Apply all default values to the document which are not procs. |
#attribute_names | Returns an array of names for the attributes available on this object. |
#database_field_name | Get the name of the provided field as it is stored in the database. |
#dot_dollar_field? | Does this field start with a dollar sign ($) or contain a dot/period (.)? |
#lazy_settable? | Is the provided field a lazy evaluation? |
#validate_writable_field_name! | Validate whether or not the field starts with a dollar sign ($) or contains a dot/period (.). |
Inspectable
- Included
#inspect | Returns the class name plus its attributes. |
#pretty_print | This pretty prints the same information as the inspect method. |
#inspect_dynamic_fields | Get an array of inspected dynamic fields for the document. |
#inspect_fields | Get an array of inspected fields for the document. |
Matchable
- Included
#_matches? | Determines if this document has the attributes to match the supplied MongoDB selector. |
Persistable
- Included
#atomically | Execute operations atomically (in a single database call) for everything that would happen inside the block. |
#fail_due_to_callback! | Raise an error if a callback failed. |
#fail_due_to_validation! | Raise an error if validation failed. |
#_mongoid_atomic_context_changed_fields | Return the current atomic context’s changed fields. |
#_mongoid_pop_atomic_context | Pop an atomic context off the stack. |
#_mongoid_push_atomic_context | Push a new atomic context onto the stack. |
#_mongoid_remove_atomic_context_changes | Remove the dirty changes for all fields changed in the current atomic context. |
#_mongoid_reset_atomic_context_changes! | Reset the attributes for all fields changed in the current atomic context. |
#persist_atomic_operations | Persist the atomic operations. |
#persist_or_delay_atomic_operation | If we are in an atomically block, add the operations to the delayed group, otherwise persist immediately. |
#post_process_persist | Post process the persistence operation. |
#prepare_atomic_operation | Prepare an atomic persistence operation. |
#process_atomic_operations | Process the atomic operations - this handles the common behavior of iterating through each op, getting the aliased field name, and removing appropriate dirty changes. |
Persistable::Unsettable
- Included
#unset | Perform an $unset operation on the provided fields and in the values in the document in memory. |
Persistable::Upsertable
- Included
#upsert | Perform an upsert of the document. |
#prepare_upsert | Prepare the upsert for execution. |
Persistable::Updatable
- Included
#update | Update the document attributes in the database. |
#update! | Update the document attributes in the database and raise an error if validation failed. |
#update_attribute | Update a single attribute and persist the entire document. |
#update_attributes | Alias for Persistable::Updatable#update. |
#update_attributes! | Alias for Persistable::Updatable#update!. |
#enforce_immutability_of_id_field! | Checks to see if the _id field has been modified. |
#init_atomic_updates | Initialize the atomic updates. |
#prepare_update | Prepare the update for execution. |
#process_touch_option | If there is a touch option and it is false, this method will call the timeless method so that the updated_at attribute is not updated. |
#run_all_callbacks_for_update | Consolidates all the callback invocations into a single place, to avoid cluttering the logic in #prepare_update. |
#update_document | Update the document in the database. |
Persistable::Settable
- Included
#set | Perform a $set operation on the provided field/value pairs and set the values in the document in memory. |
Persistable::Savable
- Included
#save | Save the document - will perform an insert if the document is new, and update if not. |
#save! | Save the document - will perform an insert if the document is new, and update if not. |
Persistable::Renamable
- Included
#rename | Rename fields from one value to another via $rename. |
Persistable::Pushable
- Included
#add_to_set | Add the single values to the arrays only if the value does not already exist in the array. |
#push | Push a single value or multiple values onto arrays. |
Persistable::Pullable
- Included
#pull | Pull single values from the provided arrays. |
#pull_all | Pull multiple values from the provided array fields. |
Positional
- Included
#positionally | Takes the provided selector and atomic operations and replaces the indexes of the embedded documents with the positional operator when needed. |
#process_operations, #process_updates, #replace_index |
Persistable::Poppable
- Included
#pop | Pop or shift items from arrays using the $pop operator. |
Persistable::Multipliable
- Included
#mul | Multiply the provided fields by the corresponding values. |
Persistable::Minable
- Included
#clamp_upper_bound | Alias for Persistable::Minable#set_min. |
#set_min |
|
Persistable::Maxable
- Included
#clamp_lower_bound | Alias for Persistable::Maxable#set_max. |
#set_max |
|
Persistable::Logical
- Included
#bit | Performs an atomic $bit operation on the field with the provided hash of bitwise ops to execute in order. |
Persistable::Incrementable
- Included
#inc | Increment the provided fields by the corresponding values. |
Persistable::Destroyable
- Included
#destroy | Remove the document from the database with callbacks. |
#destroy! | Remove the document from the database with callbacks. |
Persistable::Deletable
- Included
#delete | Remove the document from the database. |
#remove | Alias for Persistable::Deletable#delete. |
#atomic_deletes | Get the atomic deletes for the operation. |
#delete_as_embedded | Delete the embedded document. |
#delete_as_root | Delete the root document. |
#notifying_parent? | Are we needing to notify the parent document of the deletion. |
#prepare_delete | Prepare the delete operation. |
Persistable::Creatable
- Included
#insert | Insert a new document into the database. |
#atomic_inserts | Get the atomic insert for embedded documents, either a push or set. |
#insert_as_embedded | Insert the embedded document. |
#insert_as_root | Insert the root document. |
#post_process_insert | Post process an insert, which sets the new record attribute to false and flags all the children as persisted. |
#prepare_insert | Prepare the insert for execution. |
Association
- Included
#association_name | Get the association name for this document. |
#reload_relations | Convenience method for iterating through the loaded associations and reloading them. |
Association::Reflections
- Included
#reflect_on_all_association | Returns all association metadata for the supplied macros. |
#reflect_on_association | Returns the association metadata for the supplied name. |
Association::Macros
- Included
#associations | This is convenience for libraries still on the old API. |
Association::Builders
- Included
#parse_args | Parse out the attributes and the options from the args passed to a build_ or create_ methods. |
Association::Depending
- Included
#apply_destroy_dependencies! | Perform all cascading deletes, destroys, or nullifies. |
#_dependent_delete_all!, #_dependent_destroy!, #_dependent_nullify!, #_dependent_restrict_with_error!, #_dependent_restrict_with_exception! |
Association::Accessors
- Included
#__build__ | Builds the related document and creates the association unless the document is nil, then sets the association on this document. |
#create_relation | Create an association from an object and association metadata. |
#reset_relation_criteria | Resets the criteria inside the association proxy. |
#set_relation |
|
#_mongoid_filter_selected_fields | Returns a subset of __selected_fields attribute applicable to the (embedded) association with the given key, or nil if no projection is to be performed. |
#get_relation | Get the association. |
#needs_no_database_query?, | |
#parse_args | Parse out the attributes and the options from the args passed to a build_ or create_ methods. |
#without_autobuild | Yield to the block with autobuild functionality turned off. |
Association::Referenced::Syncable
- Included
#_syncable? | Is the document able to be synced on the inverse side? This is only if the key has changed and the association bindings have not been run. |
#_synced | Get the synced foreign keys. |
#_synced? | Has the document been synced for the foreign key? |
#remove_inverse_keys | Update the inverse keys on destroy. |
#update_inverse_keys | Update the inverse keys for the association. |
Association::Referenced::CounterCache
- Included
#reset_counters | Reset the given counter using the .count() query from the db. |
Association::Referenced::AutoSave
- Included
#__autosaving__ | Begin the associated autosave. |
#changed_for_autosave? | Check if there is changes for auto-saving. |
Reloadable
- Included
#reload | Reloads the |
#_reload | Reload the document, determining if it’s embedded or not and what behavior to use. |
#check_for_deleted_document! | Checks to see if the given attributes argument indicates that the object has been deleted. |
#reload_embedded_document | Reload the embedded document. |
#reload_root_document | Reload the root document. |
#reset_object! | Resets the current object using the given attributes. |
Scopable
- Included
#apply_default_scoping | Apply the default scoping to the attributes of the document, as long as they are not complex queries. |
Selectable
- Included
#atomic_selector | Get the atomic selector for the document. |
#embedded_atomic_selector | Get the atomic selector for an embedded document. |
#root_atomic_selector_in_db | Get the atomic selector that would match the existing version of the root document. |
Serializable
- Included
#serializable_hash | Gets the document as a serializable hash, used by ActiveModel’s JSON serializer. |
#field_names | Get the names of all fields that will be serialized. |
#relation_names | Since the inclusions can be a hash, symbol, or array of symbols, this is provided as a convenience to parse out the names. |
#relation_options | Since the inclusions can be a hash, symbol, or array of symbols, this is provided as a convenience to parse out the options. |
#serialize_attribute | Serialize a single attribute. |
#serialize_relations | For each of the provided include options, get the association needed and provide it in the hash. |
Shardable
- Included
#shard_key_field_value | Returns the value for the named shard key. |
#shard_key_fields | Get the shard key fields. |
#shard_key_selector | Returns the selector that would match the defined shard keys. |
#shard_key_selector_in_db | Returns the selector that would match the existing version of this document in the database. |
Stateful
- Included
#readonly! | Flags the document as readonly. |
#reset_readonly |
Cacheable
- Included
#cache_key | Print out the cache key. |
#cache_version | Return the cache version for this model. |
Traversable
- Included
#_children | Get all child |
#_descendants | Get all descendant |
#_reset_memoized_descendants! | Resets the memoized descendants on the object. |
#collect_children | Collect all the children of this document. |
#collect_descendants | Collect all the descendants of this document. |
#flag_descendants_persisted | Marks all descendants as being persisted. |
#parentize | Sets up a child/parent association. |
#remove_child | Remove a child document from this parent. |
#reset_persisted_descendants | After descendants are persisted we can call this to move all their changes and flag them as persisted in one call. |
Validatable::Macros
- self
#validates_associated | Validates whether or not an association is valid or not. |
#validates_format_of | Validates the format of a field. |
#validates_length_of | Validates the length of a field. |
#validates_presence_of | Validates whether or not a field is present - meaning nil or empty. |
#validates_uniqueness_of | Validates whether or not a field is unique against the documents in the database. |
Validatable
- Included
#begin_validate | Begin the associated validation. |
#exit_validate | Exit the associated validation. |
#performing_validations? | Given the provided options, are we performing validations? |
#read_attribute_for_validation | Overrides the default ActiveModel behavior since we need to handle validations of associations slightly different than just calling the getter. |
#valid? | Determine if the document is valid. |
#validating | Perform a validation within the associated block. |
Interceptable
- Included
#_mongoid_run_child_after_callbacks | Execute the after callbacks. |
#_mongoid_run_child_before_callbacks | Execute the before callbacks of given kind for embedded documents. |
#_mongoid_run_child_callbacks | Run the callbacks for embedded documents. |
#_mongoid_run_child_callbacks_with_around | Execute the callbacks of given kind for embedded documents including around callbacks. |
#_mongoid_run_child_callbacks_without_around | Execute the callbacks of given kind for embedded documents without around callbacks. |
#callback_executable? | Is the provided type of callback executable by this document? |
#in_callback_state? | Is the document currently in a state that could potentially require callbacks to be executed? |
#run_after_callbacks | Run only the after callbacks for the specific event. |
#run_before_callbacks | Run only the before callbacks for the specific event. |
#run_callbacks | Run the callbacks for the document. |
#run_pending_callbacks | Run the pending callbacks. |
#cascadable_child? | Determine if the child should fire the callback. |
#cascadable_children | Get all the child embedded documents that are flagged as cascadable. |
#child_callback_type | Get the name of the callback that the child should fire. |
#compile_callbacks | Compile the callback chain. |
#halted_callback_hook | We need to hook into this for autosave, since we don’t want it firing if the before callbacks were halted. |
#run_targeted_callbacks | Run only the callbacks for the target location (before, after, around) and kind (save, update, create). |
Copyable
- Included
#clone | Clone or dup the current |
#dup | Alias for Copyable#clone. |
#clone_document | Clone the document attributes. |
#process_localized_attributes | When cloning, if the document has localized fields we need to ensure they are properly processed in the clone. |
Equality
- Included
DSL Calls
included
All modules that a Document
is composed of are defined in this module, to keep the document class from getting too cluttered.
34 35 36
# File 'lib/mongoid/composable.rb', line 34
included do extend Findable end
Class Attribute Details
._declared_scopes (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 13
class_attribute :_declared_scopes
._declared_scopes? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 13
class_attribute :_declared_scopes
.aliased_fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 130
class_attribute :aliased_fields
.aliased_fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 130
class_attribute :aliased_fields
.cache_timestamp_format (rw) Also known as: #cache_timestamp_format
[ GitHub ]# File 'lib/mongoid/cacheable.rb', line 11
cattr_accessor :, instance_writer: false
.default_scoping (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 12
class_attribute :default_scoping
.default_scoping? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 12
class_attribute :default_scoping
.discriminator_key (rw)
[ GitHub ]# File 'lib/mongoid/traversable.rb', line 162
class_attribute :discriminator_key, instance_accessor: false
.discriminator_key? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/traversable.rb', line 162
class_attribute :discriminator_key, instance_accessor: false
.discriminator_mapping ⇒ Hash<String, Class
> (rw)
# File 'lib/mongoid/traversable.rb', line 172
attr_accessor :discriminator_mapping
.encrypt_metadata (rw)
[ GitHub ]# File 'lib/mongoid/encryptable.rb', line 10
class_attribute :
.encrypt_metadata? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/encryptable.rb', line 10
class_attribute :
.fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 132
class_attribute :fields
.fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 132
class_attribute :fields
.include_root_in_json (rw)
[ GitHub ]# File 'lib/mongoid/serializable.rb', line 16
def include_root_in_json @include_root_in_json.nil? ? ::Mongoid.include_root_in_json : @include_root_in_json end
.include_root_in_json=(new_value) (rw)
[ GitHub ]# File 'lib/mongoid/serializable.rb', line 20
def include_root_in_json=(new_value) @include_root_in_json = new_value end
.index_specifications (rw) Also known as: #index_specifications
[ GitHub ]# File 'lib/mongoid/indexable.rb', line 15
cattr_accessor :index_specifications
.localized_fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 131
class_attribute :localized_fields
.localized_fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 131
class_attribute :localized_fields
.polymorphic (rw)
[ GitHub ]# File 'lib/mongoid/association.rb', line 54
class_attribute :polymorphic
.polymorphic? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/association.rb', line 54
class_attribute :polymorphic
.post_processed_defaults (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 134
class_attribute :post_processed_defaults
.post_processed_defaults? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 134
class_attribute :post_processed_defaults
.pre_processed_defaults (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 133
class_attribute :pre_processed_defaults
.pre_processed_defaults? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 133
class_attribute :pre_processed_defaults
.search_index_specs (rw) Also known as: #search_index_specs
[ GitHub ]# File 'lib/mongoid/search_indexable.rb', line 54
cattr_accessor :search_index_specs
.shard_config ⇒ Hash | nil
(rw)
Also known as: #shard_config
Returns the shard configuration, which is a hash with the following (symbol) keys:
-
keys: A hash mapping (symbol) field names to values, defining the shard key. Values can be either the integer 1 for ranged sharding or the string “hashed” for hashed sharding.
-
options: A hash containing options for shardCollections command.
If shard key was not declared via the shard_key
macro, shard_config
attribute is nil.
# File 'lib/mongoid/shardable.rb', line 36
cattr_accessor :shard_config
.shard_key_fields ⇒ Array<Symbol> (rw) Also known as: #shard_key_fields
Returns the list of shard key fields, if shard key was declared on this model. If no shard key was declared, returns an empty array.
# File 'lib/mongoid/shardable.rb', line 16
cattr_accessor :shard_key_fields
Class Method Details
.add_discriminator_mapping(value, klass = self)
Add a discriminator mapping to the parent class. This mapping is used when receiving a document to identify its class.
# File 'lib/mongoid/traversable.rb', line 182
def self.add_discriminator_mapping(value, klass = self) self.discriminator_mapping ||= {} self.discriminator_mapping[value] = klass superclass.add_discriminator_mapping(value, klass) if hereditary? end
.get_discriminator_mapping(value) ⇒ Class
| nil
Get the discriminator mapping from the parent class. This method returns nil if there is no mapping for the given value.
# File 'lib/mongoid/traversable.rb', line 197
def self.get_discriminator_mapping(value) self.discriminator_mapping[value] if self.discriminator_mapping end
.prohibited_methods ⇒ Array<Symbol>
Get a list of methods that would be a bad idea to define as field names or override when including Document
.
# File 'lib/mongoid/composable.rb', line 130
def prohibited_methods @prohibited_methods ||= MODULES.flat_map do |mod| mod.instance_methods.map(&:to_sym) end + RESERVED_METHOD_NAMES end
Instance Attribute Details
#_declared_scopes (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 13
class_attribute :_declared_scopes
#_declared_scopes? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 13
class_attribute :_declared_scopes
#_index (rw)
When MongoDB finally fully implements the positional operator, we can get rid of all indexing related code in ::Mongoid
.
# File 'lib/mongoid/atomic.rb', line 25
attr_accessor :_index
#aliased_fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 130
class_attribute :aliased_fields
#aliased_fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 130
class_attribute :aliased_fields
#before_callback_halted (rw)
[ GitHub ]# File 'lib/mongoid/interceptable.rb', line 51
attr_accessor :before_callback_halted
#cache_timestamp_format (readonly)
[ GitHub ]# File 'lib/mongoid/cacheable.rb', line 11
cattr_accessor :, instance_writer: false
#default_scoping (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 12
class_attribute :default_scoping
#default_scoping? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/scopable.rb', line 12
class_attribute :default_scoping
#discriminator_key (readonly)
[ GitHub ]# File 'lib/mongoid/traversable.rb', line 165
delegate :discriminator_key, to: ::Mongoid
#encrypt_metadata (rw)
[ GitHub ]# File 'lib/mongoid/encryptable.rb', line 10
class_attribute :
#encrypt_metadata? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/encryptable.rb', line 10
class_attribute :
#fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 132
class_attribute :fields
#fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 132
class_attribute :fields
#id (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 149
alias_attribute(:id, :_id)
#id? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 149
alias_attribute(:id, :_id)
#index_specifications (rw)
[ GitHub ]# File 'lib/mongoid/indexable.rb', line 15
cattr_accessor :index_specifications
#localized_fields (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 131
class_attribute :localized_fields
#localized_fields? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 131
class_attribute :localized_fields
#polymorphic (rw)
[ GitHub ]# File 'lib/mongoid/association.rb', line 54
class_attribute :polymorphic
#polymorphic? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/association.rb', line 54
class_attribute :polymorphic
#post_processed_defaults (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 134
class_attribute :post_processed_defaults
#post_processed_defaults? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 134
class_attribute :post_processed_defaults
#pre_processed_defaults (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 133
class_attribute :pre_processed_defaults
#pre_processed_defaults? ⇒ Boolean (rw)
[ GitHub ]# File 'lib/mongoid/fields.rb', line 133
class_attribute :pre_processed_defaults
#search_index_specs (rw)
[ GitHub ]# File 'lib/mongoid/search_indexable.rb', line 54
cattr_accessor :search_index_specs
#shard_config (rw)
[ GitHub ]# File 'lib/mongoid/shardable.rb', line 36
cattr_accessor :shard_config
#shard_key_fields (rw)
[ GitHub ]# File 'lib/mongoid/shardable.rb', line 16
cattr_accessor :shard_key_fields