Renaming to CouchRest Model
Refactored basic directory structure. Moved to ActiveSupport for Validations and Callbacks. Cleaned up older code, and removed support for text property types.
This commit is contained in:
parent
9f1eea8d32
commit
c280b3a29b
70 changed files with 1725 additions and 3733 deletions
39
lib/couchrest/model/casted_array.rb
Normal file
39
lib/couchrest/model/casted_array.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
#
|
||||
# Wrapper around Array so that the casted_by attribute is set in all
|
||||
# elements of the array.
|
||||
#
|
||||
|
||||
module CouchRest::Model
|
||||
class CastedArray < Array
|
||||
attr_accessor :casted_by
|
||||
attr_accessor :property
|
||||
|
||||
def initialize(array, property)
|
||||
self.property = property
|
||||
super(array)
|
||||
end
|
||||
|
||||
def << obj
|
||||
super(instantiate_and_cast(obj))
|
||||
end
|
||||
|
||||
def push(obj)
|
||||
super(instantiate_and_cast(obj))
|
||||
end
|
||||
|
||||
def []= index, obj
|
||||
super(index, instantiate_and_cast(obj))
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def instantiate_and_cast(obj)
|
||||
if self.casted_by && self.property && obj.class != self.property.type_class
|
||||
self.property.cast_value(self.casted_by, obj)
|
||||
else
|
||||
obj.casted_by = self.casted_by if obj.respond_to?(:casted_by)
|
||||
obj
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue