spec'd casted extended document
This commit is contained in:
parent
80317f31a5
commit
55ecda2c90
6 changed files with 58 additions and 10 deletions
|
@ -1,14 +1,15 @@
|
|||
module CouchRest
|
||||
class Response < Hash
|
||||
def initialize(keys = {})
|
||||
keys.each do |k,v|
|
||||
def initialize(pkeys = {})
|
||||
pkeys ||= {}
|
||||
pkeys.each do |k,v|
|
||||
self[k.to_s] = v
|
||||
end
|
||||
end
|
||||
def []= key, value
|
||||
def []=(key, value)
|
||||
super(key.to_s, value)
|
||||
end
|
||||
def [] key
|
||||
def [](key)
|
||||
super(key.to_s)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -55,9 +55,14 @@ module CouchRest
|
|||
else
|
||||
# Let people use :send as a Time parse arg
|
||||
klass = ::CouchRest.constantize(target)
|
||||
# I'm not convince we should or should not create a new instance if we are casting a doc/extended doc without default value and nothing was passed
|
||||
# unless (property.casted &&
|
||||
# (klass.superclass == CouchRest::ExtendedDocument || klass.superclass == CouchRest::Document) &&
|
||||
# (self[key].nil? || property.default.nil?))
|
||||
klass.send(property.init_method, self[key])
|
||||
#end
|
||||
end
|
||||
self[key].casted_by = self if self[key].respond_to?(:casted_by)
|
||||
self[property.name].casted_by = self if self[property.name].respond_to?(:casted_by)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,15 +24,17 @@ module CouchRest
|
|||
subklass.send(:include, CouchRest::Mixins::Properties)
|
||||
end
|
||||
|
||||
# Accessors
|
||||
attr_accessor :casted_by
|
||||
|
||||
# Callbacks
|
||||
define_callbacks :create
|
||||
define_callbacks :save
|
||||
define_callbacks :update
|
||||
define_callbacks :destroy
|
||||
|
||||
def initialize(keys={})
|
||||
def initialize(passed_keys={})
|
||||
apply_defaults # defined in CouchRest::Mixins::Properties
|
||||
keys ||= {}
|
||||
super
|
||||
cast_keys # defined in CouchRest::Mixins::Properties
|
||||
unless self['_id'] && self['_rev']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue