Class: CouchRest::Document
- Inherits:
-
Object
- Object
- CouchRest::Document
- Extended by:
- InheritableAttributes
- Includes:
- Attachments, Attributes
- Defined in:
- lib/couchrest/document.rb
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Object) database
Returns the document's database.
Class Method Summary (collapse)
-
+ (Object) use_database(db)
override the CouchRest::Model-wide default_database This is not a thread safe operation, do not change the model database at runtime.
Instance Method Summary (collapse)
-
- (Object) copy(dest)
copies the document to a new id.
-
- (Object) destroy(bulk = false)
Deletes the document from the database.
- - (Object) id
- - (Object) id=(id)
-
- (Boolean) new?
(also: #new_document?)
returns true if the document has never been saved.
- - (Object) rev
-
- (Object) save(bulk = false)
Saves the document to the db using create or update.
-
- (Object) uri(append_rev = false)
Returns the CouchDB uri for the document.
Methods included from InheritableAttributes
couchrest_inheritable_accessor, couchrest_inheritable_reader, couchrest_inheritable_writer
Methods included from Attachments
#delete_attachment, #fetch_attachment, #put_attachment
Methods included from Attributes
#[], #[]=, #as_couch_json, #clone, #delete, #dup, #freeze, #has_key?, #initialize, #inspect, #to_hash
Instance Attribute Details
- (Object) database
Returns the document's database
90 91 92 |
# File 'lib/couchrest/document.rb', line 90 def database @database || self.class.database end |
Class Method Details
+ (Object) use_database(db)
override the CouchRest::Model-wide default_database This is not a thread safe operation, do not change the model database at runtime.
98 99 100 |
# File 'lib/couchrest/document.rb', line 98 def use_database(db) self.database = db end |
Instance Method Details
- (Object) copy(dest)
copies the document to a new id. If the destination id currently exists, a rev must be provided. dest can take one of two forms if overwriting: "id_to_overwrite?rev=revision" or the actual doc hash with a '_rev' key
71 72 73 74 75 |
# File 'lib/couchrest/document.rb', line 71 def copy(dest) raise ArgumentError, "doc.database required to copy" unless database result = database.copy_doc(self, dest) result['ok'] end |
- (Object) destroy(bulk = false)
Deletes the document from the database. Runs the :delete callbacks. Removes the _id and _rev fields, preparing the document to be saved to a new _id. If bulk is true (defaults to false) the document won't actually be deleted from the db until bulk save.
58 59 60 61 62 63 64 65 66 |
# File 'lib/couchrest/document.rb', line 58 def destroy(bulk = false) raise ArgumentError, "doc.database required to destroy" unless database result = database.delete_doc(self, bulk) if result['ok'] self['_rev'] = nil self['_id'] = nil end result['ok'] end |
- (Object) id
27 28 29 |
# File 'lib/couchrest/document.rb', line 27 def id self['_id'] end |
- (Object) id=(id)
30 31 32 |
# File 'lib/couchrest/document.rb', line 30 def id=(id) self['_id'] = id end |
- (Boolean) new? Also known as: new_document?
returns true if the document has never been saved
38 39 40 |
# File 'lib/couchrest/document.rb', line 38 def new? !rev end |
- (Object) rev
33 34 35 |
# File 'lib/couchrest/document.rb', line 33 def rev self['_rev'] end |
- (Object) save(bulk = false)
Saves the document to the db using create or update. Also runs the :save callbacks. Sets the _id and _rev fields based on CouchDB's response. If bulk is true (defaults to false) the document is cached for bulk save.
47 48 49 50 51 |
# File 'lib/couchrest/document.rb', line 47 def save(bulk = false) raise ArgumentError, "doc.database required for saving" unless database result = database.save_doc self, bulk result['ok'] end |
- (Object) uri(append_rev = false)
Returns the CouchDB uri for the document
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/couchrest/document.rb', line 78 def uri(append_rev = false) return nil if new? couch_uri = "#{database.root}/#{CGI.escape(id)}" if append_rev == true couch_uri << "?rev=#{rev}" elsif append_rev.kind_of?(Integer) couch_uri << "?rev=#{append_rev}" end couch_uri end |