Sha256: 81dbf764eeb6a850f8d6b0a42da21ef38a52b6c01d6d27cb4c31ea8403890d57
Contents?: true
Size: 1.57 KB
Versions: 5
Compression:
Stored size: 1.57 KB
Contents
module CouchRest class Response < Hash def initialize keys = {} keys.each do |k,v| self[k.to_s] = v end end def []= key, value super(key.to_s, value) end def [] key super(key.to_s) end end class Document < Response attr_accessor :database # alias for self['_id'] def id self['_id'] end # alias for self['_rev'] def rev self['_rev'] end # returns true if the document has never been saved def new_document? !rev end # Saves the document to the db using create or update. Also runs the :save # callbacks. Sets the <tt>_id</tt> and <tt>_rev</tt> fields based on # CouchDB's response. # If <tt>bulk</tt> is <tt>true</tt> (defaults to false) the document is cached for bulk save. def save(bulk = false) raise ArgumentError, "doc.database required for saving" unless database result = database.save self, bulk result['ok'] end # Deletes the document from the database. Runs the :delete callbacks. # Removes the <tt>_id</tt> and <tt>_rev</tt> fields, preparing the # document to be saved to a new <tt>_id</tt>. # If <tt>bulk</tt> is <tt>true</tt> (defaults to false) the document won't # actually be deleted from the db until bulk save. def destroy(bulk = false) raise ArgumentError, "doc.database required to destroy" unless database result = database.delete(self, bulk) if result['ok'] self['_rev'] = nil self['_id'] = nil end result['ok'] end end end
Version data entries
5 entries across 5 versions & 4 rubygems