lib/mongoid/criterion/selector.rb in mongoid-2.0.2 vs lib/mongoid/criterion/selector.rb in mongoid-2.1.0
- old
+ new
@@ -98,11 +98,11 @@
#
# @return [ Object ] The cast value.
#
# @since 1.0.0
def typecast_value_for(field, value)
- return field.set(value) if field.type === value
+ return field.serialize(value) if field.type === value
case value
when Hash
value = value.dup
value.each_pair do |k, v|
value[k] = typecast_hash_value(field, k, v)
@@ -110,11 +110,15 @@
when Array
value.map { |v| typecast_value_for(field, v) }
when Regexp
value
else
- field.type == Array ? value.class.set(value) : field.set(value)
+ if field.type == Array
+ Serialization.mongoize(value, value.class)
+ else
+ field.serialize(value)
+ end
end
end
# Typecast the value for booleans and integers in hashes.
#
@@ -129,12 +133,12 @@
#
# @since 1.0.0
def typecast_hash_value(field, key, value)
case key
when "$exists"
- Boolean.set(value)
+ Serialization.mongoize(value, Boolean)
when "$size"
- Integer.set(value)
+ Serialization.mongoize(value, Integer)
else
typecast_value_for(field, value)
end
end
end