lib/couchrest/mixins/validation.rb in couchrest-0.24 vs lib/couchrest/mixins/validation.rb in couchrest-0.26
- old
+ new
@@ -113,10 +113,25 @@
end
# Check if a resource is valid in a given context
#
def valid?(context = :default)
- self.class.validators.execute(context, self)
+ result = self.class.validators.execute(context, self)
+ result && validate_casted_arrays
+ end
+
+ # checking on casted objects
+ def validate_casted_arrays
+ result = true
+ array_casted_properties = self.class.properties.select { |property| property.casted && property.type.instance_of?(Array) }
+ array_casted_properties.each do |property|
+ casted_values = self.send(property.name)
+ next unless casted_values.respond_to?(:each) && casted_values.first.respond_to?(:valid?)
+ casted_values.each do |value|
+ result = (result && value.valid?) if value.respond_to?(:valid?)
+ end
+ end
+ result
end
# Begin a recursive walk of the model checking validity
#
def all_valid?(context = :default)