File tree Expand file tree Collapse file tree 3 files changed +24
-20
lines changed Expand file tree Collapse file tree 3 files changed +24
-20
lines changed Original file line number Diff line number Diff line change @@ -68,6 +68,10 @@ module Config
68
68
# existing method.
69
69
option :scope_overwrite_exception , default : false
70
70
71
+ # Indicates whether or not to raise an error when attempting
72
+ # to assign an incompatible type to a field.
73
+ option :strict_type_assignment , default : false
74
+
71
75
# Use ActiveSupport's time zone in time operations instead of the
72
76
# Ruby default time zone.
73
77
option :use_activesupport_time_zone , default : true
Original file line number Diff line number Diff line change @@ -150,16 +150,20 @@ def evolve_multi(specs)
150
150
#
151
151
# @return [ Object ] The serialized object.
152
152
def evolve ( serializer , value )
153
- case value
154
- when Hash
155
- evolve_hash ( serializer , value )
156
- when Array
157
- evolve_array ( serializer , value )
158
- when Range
159
- value . __evolve_range__ ( serializer : serializer )
160
- else
161
- ( serializer || value . class ) . evolve ( value )
162
- end
153
+ _value = case value
154
+ when Hash
155
+ evolve_hash ( serializer , value )
156
+ when Array
157
+ evolve_array ( serializer , value )
158
+ when Range
159
+ value . __evolve_range__ ( serializer : serializer )
160
+ when Mongoid ::UncastableValue
161
+ value
162
+ else
163
+ ( serializer || value . class ) . evolve ( value )
164
+ end
165
+ _value = _value . raw_value if _value . is_a? ( Mongoid ::UncastableValue )
166
+ _value
163
167
end
164
168
165
169
# Evolve a single key selection with array values.
Original file line number Diff line number Diff line change @@ -17,11 +17,9 @@ class << self
17
17
#
18
18
# @api private
19
19
def demongoize ( object )
20
- if object . nil?
21
- object
22
- else
23
- object . to_s . to_sym
24
- end
20
+ return nil if object . nil?
21
+ return object . to_s . to_sym if object . respond_to? ( :to_s )
22
+ Mongoid ::UncastableValue . new ( object , 'String' )
25
23
end
26
24
27
25
# Turn the object from the ruby type we deal with to a Mongo friendly
@@ -36,11 +34,9 @@ def demongoize(object)
36
34
#
37
35
# @api private
38
36
def mongoize ( object )
39
- if object . nil?
40
- object
41
- else
42
- object . to_s
43
- end
37
+ return nil if object . nil?
38
+ return object . to_s if object . respond_to? ( :to_s )
39
+ Mongoid ::UncastableValue . new ( object , 'String' )
44
40
end
45
41
46
42
# @api private
You can’t perform that action at this time.
0 commit comments