Class: CouchRest::Document
Direct Known Subclasses
Instance Attribute Summary collapse
-
#database ⇒ Object
Returns the document’s database.
Attributes inherited from Response
Class Method Summary collapse
-
.use_database(db) ⇒ Object
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
-
#copy(dest) ⇒ Object
copies the document to a new id.
-
#destroy(bulk = false) ⇒ Object
Deletes the document from the database.
- #id ⇒ Object
- #id=(id) ⇒ Object
-
#new? ⇒ Boolean
(also: #new_document?)
returns true if the document has never been saved.
- #rev ⇒ Object
-
#save(bulk = false) ⇒ Object
Saves the document to the db using create or update.
-
#uri(append_rev = false) ⇒ Object
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 inherited from Response
#[], #[]=, #delete, #initialize
Constructor Details
This class inherits a constructor from CouchRest::Response
Instance Attribute Details
#database ⇒ Object
Returns the document’s database
83 84 85 |
# File 'lib/couchrest/document.rb', line 83 def database @database end |
Class Method Details
.use_database(db) ⇒ Object
override the CouchRest::Model-wide default_database This is not a thread safe operation, do not change the model database at runtime.
14 15 16 |
# File 'lib/couchrest/document.rb', line 14 def self.use_database(db) self.database = db end |
Instance Method Details
#copy(dest) ⇒ Object
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
64 65 66 67 68 |
# File 'lib/couchrest/document.rb', line 64 def copy(dest) raise ArgumentError, "doc.database required to copy" unless database result = database.copy_doc(self, dest) result['ok'] end |
#destroy(bulk = false) ⇒ Object
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.
51 52 53 54 55 56 57 58 59 |
# File 'lib/couchrest/document.rb', line 51 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 |
#id ⇒ Object
18 19 20 |
# File 'lib/couchrest/document.rb', line 18 def id self['_id'] end |
#id=(id) ⇒ Object
22 23 24 |
# File 'lib/couchrest/document.rb', line 22 def id=(id) self['_id'] = id end |
#new? ⇒ Boolean Also known as: new_document?
returns true if the document has never been saved
31 32 33 |
# File 'lib/couchrest/document.rb', line 31 def new? !rev end |
#rev ⇒ Object
26 27 28 |
# File 'lib/couchrest/document.rb', line 26 def rev self['_rev'] end |
#save(bulk = false) ⇒ Object
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.
40 41 42 43 44 |
# File 'lib/couchrest/document.rb', line 40 def save(bulk = false) raise ArgumentError, "doc.database required for saving" unless database result = database.save_doc self, bulk result['ok'] end |
#uri(append_rev = false) ⇒ Object
Returns the CouchDB uri for the document
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/couchrest/document.rb', line 71 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 |