Module: MongoModel::DocumentExtensions::Persistence
- Extended by:
- ActiveSupport::Concern
- Included in:
- MongoModel::Document
- Defined in:
- lib/mongomodel/document/persistence.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #collection ⇒ Object
- #database ⇒ Object
- #delete ⇒ Object
-
#destroy ⇒ Object
Remove the document from the database.
-
#generate_id ⇒ Object
Generate a new BSON::ObjectId for the record.
-
#reload ⇒ Object
Reload the document from the database.
-
#save ⇒ Object
Save the document to the database.
-
#save! ⇒ Object
Save the document to the database.
-
#update_attribute(name, value) ⇒ Object
Updates a single attribute and saves the document without going through the normal validation procedure.
-
#update_attributes(attributes, options = {}) ⇒ Object
Updates all the attributes from the passed-in Hash and saves the document.
-
#update_attributes!(attributes, options = {}) ⇒ Object
Updates its receiver just like
update_attributes
but callssave!
instead ofsave
, so an exception is raised if the docuemnt is invalid.
Instance Method Details
#collection ⇒ Object
73 74 75 |
# File 'lib/mongomodel/document/persistence.rb', line 73 def collection self.class.collection end |
#database ⇒ Object
77 78 79 |
# File 'lib/mongomodel/document/persistence.rb', line 77 def database self.class.database end |
#delete ⇒ Object
36 37 38 39 40 |
# File 'lib/mongomodel/document/persistence.rb', line 36 def delete self.class.unscoped.delete(id) set_destroyed(true) freeze end |
#destroy ⇒ Object
Remove the document from the database.
43 44 45 |
# File 'lib/mongomodel/document/persistence.rb', line 43 def destroy delete end |
#generate_id ⇒ Object
Generate a new BSON::ObjectId for the record. Override in subclasses for custom ID generation.
83 84 85 |
# File 'lib/mongomodel/document/persistence.rb', line 83 def generate_id ::BSON::ObjectId.new.to_s end |
#reload ⇒ Object
Reload the document from the database. If the document hasn’t been saved, this method will raise an error.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/mongomodel/document/persistence.rb', line 13 def reload reloaded = self.class.unscoped.find(id) attributes.clear attributes.load!(reloaded.attributes.to_mongo) associations.values.each do |association| association.proxy.reset end self end |
#save ⇒ Object
Save the document to the database. Returns true
on success.
27 28 29 |
# File 'lib/mongomodel/document/persistence.rb', line 27 def save(*) create_or_update end |
#save! ⇒ Object
Save the document to the database. Raises a DocumentNotSaved exception if it fails.
32 33 34 |
# File 'lib/mongomodel/document/persistence.rb', line 32 def save!(*) create_or_update || raise(DocumentNotSaved) end |
#update_attribute(name, value) ⇒ Object
Updates a single attribute and saves the document without going through the normal validation procedure. This is especially useful for boolean flags on existing documents.
68 69 70 71 |
# File 'lib/mongomodel/document/persistence.rb', line 68 def update_attribute(name, value) send("#{name}=", value) save(:validate => false) end |
#update_attributes(attributes, options = {}) ⇒ Object
Updates all the attributes from the passed-in Hash and saves the document. If the object is invalid, the saving will fail and false will be returned.
When updating model attributes, mass-assignment security protection is respected. If no :as
option is supplied then the :default
role will be used. If you want to bypass the protection given by attr_protected
and attr_accessible
then you can do so using the :without_protection
option.
54 55 56 57 |
# File 'lib/mongomodel/document/persistence.rb', line 54 def update_attributes(attributes, ={}) self.assign_attributes(attributes, ) save end |
#update_attributes!(attributes, options = {}) ⇒ Object
Updates its receiver just like update_attributes
but calls save!
instead of save
, so an exception is raised if the docuemnt is invalid.
61 62 63 64 |
# File 'lib/mongomodel/document/persistence.rb', line 61 def update_attributes!(attributes, ={}) self.assign_attributes(attributes, ) save! end |