lib/couchrest/model/properties.rb in couchrest_model-2.0.0.beta2 vs lib/couchrest/model/properties.rb in couchrest_model-2.0.0
- old
+ new
@@ -203,29 +203,18 @@
protected
# This is not a thread safe operation, if you have to set new properties at runtime
# make sure a mutex is used.
- def define_property(name, options={}, &block)
- # check if this property is going to casted
- type = options.delete(:type) || options.delete(:cast_as)
- if block_given?
- type = Class.new do
- include Embeddable
- end
- if block.arity == 1 # Traditional, with options
- type.class_eval { yield type }
- else
- type.instance_exec(&block)
- end
- type = [type] # inject as an array
- end
- property = Property.new(name, type, options)
+ def define_property(name, options = {}, &block)
+ property = Property.new(name, options, &block)
create_property_getter(property)
create_property_setter(property) unless property.read_only == true
- if property.type_class.respond_to?(:validates_casted_model)
+
+ if property.type.respond_to?(:validates_casted_model)
validates_casted_model property.name
end
+
properties << property
properties_by_name[property.to_s] = property
property
end