factor out couchrest::document

This commit is contained in:
Chris Anderson 2008-11-03 22:52:50 -08:00
parent a6f285adfa
commit 0ce716518f
4 changed files with 59 additions and 8 deletions

View file

@ -0,0 +1,25 @@
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
end
class Design < Document
end
end

View file

@ -68,15 +68,12 @@ module CouchRest
#
# Article.by_tags :key => "ruby", :reduce => true
#
class Model < Hash
class Model < Document
# instantiates the hash by converting all the keys to strings.
def initialize keys = {}
super()
super(keys)
apply_defaults
keys.each do |k,v|
self[k.to_s] = v
end
cast_keys
unless self['_id'] && self['_rev']
self['couchrest-type'] = self.class.to_s
@ -314,9 +311,8 @@ module CouchRest
# returns stored defaults if the there is a view named this in the design doc
def has_view?(view)
view = view.to_s
if generated_design_doc['views'][view]
generated_design_doc['views'][view] &&
generated_design_doc['views'][view]["couchrest-defaults"]
end
end
# Fetch the generated design doc. Could raise an error if the generated views have not been queried yet.
@ -495,7 +491,7 @@ module CouchRest
def apply_defaults
if self.class.default
self.class.default.each do |k,v|
self[k.to_s] = v
self[k] = v
end
end
end