@@ -154,7 +154,7 @@ def elem_match(criterion)
154
154
raise Errors ::CriteriaArgumentRequired , :elem_match
155
155
end
156
156
157
- __override__ ( criterion , "$elemMatch" )
157
+ and_or_override ( criterion , "$elemMatch" )
158
158
end
159
159
key :elem_match , :override , "$elemMatch"
160
160
@@ -257,7 +257,7 @@ def eq(criterion)
257
257
raise Errors ::CriteriaArgumentRequired , :eq
258
258
end
259
259
260
- __override__ ( criterion , "$eq" )
260
+ and_or_override ( criterion , "$eq" )
261
261
end
262
262
key :eq , :override , "$eq"
263
263
@@ -277,7 +277,7 @@ def gt(criterion)
277
277
raise Errors ::CriteriaArgumentRequired , :gt
278
278
end
279
279
280
- __override__ ( criterion , "$gt" )
280
+ and_or_override ( criterion , "$gt" )
281
281
end
282
282
key :gt , :override , "$gt"
283
283
@@ -297,7 +297,7 @@ def gte(criterion)
297
297
raise Errors ::CriteriaArgumentRequired , :gte
298
298
end
299
299
300
- __override__ ( criterion , "$gte" )
300
+ and_or_override ( criterion , "$gte" )
301
301
end
302
302
key :gte , :override , "$gte"
303
303
@@ -353,7 +353,7 @@ def lt(criterion)
353
353
raise Errors ::CriteriaArgumentRequired , :lt
354
354
end
355
355
356
- __override__ ( criterion , "$lt" )
356
+ and_or_override ( criterion , "$lt" )
357
357
end
358
358
key :lt , :override , "$lt"
359
359
@@ -373,7 +373,7 @@ def lte(criterion)
373
373
raise Errors ::CriteriaArgumentRequired , :lte
374
374
end
375
375
376
- __override__ ( criterion , "$lte" )
376
+ and_or_override ( criterion , "$lte" )
377
377
end
378
378
key :lte , :override , "$lte"
379
379
@@ -410,7 +410,7 @@ def mod(criterion)
410
410
raise Errors ::CriteriaArgumentRequired , :mod
411
411
end
412
412
413
- __override__ ( criterion , "$mod" )
413
+ and_or_override ( criterion , "$mod" )
414
414
end
415
415
key :mod , :override , "$mod"
416
416
@@ -430,7 +430,7 @@ def ne(criterion)
430
430
raise Errors ::CriteriaArgumentRequired , :ne
431
431
end
432
432
433
- __override__ ( criterion , "$ne" )
433
+ and_or_override ( criterion , "$ne" )
434
434
end
435
435
alias :excludes :ne
436
436
key :ne , :override , "$ne"
@@ -451,7 +451,7 @@ def near(criterion)
451
451
raise Errors ::CriteriaArgumentRequired , :near
452
452
end
453
453
454
- __override__ ( criterion , "$near" )
454
+ and_or_override ( criterion , "$near" )
455
455
end
456
456
key :near , :override , "$near"
457
457
@@ -471,7 +471,7 @@ def near_sphere(criterion)
471
471
raise Errors ::CriteriaArgumentRequired , :near_sphere
472
472
end
473
473
474
- __override__ ( criterion , "$nearSphere" )
474
+ and_or_override ( criterion , "$nearSphere" )
475
475
end
476
476
key :near_sphere , :override , "$nearSphere"
477
477
@@ -902,6 +902,22 @@ def selection(criterion = nil)
902
902
end
903
903
end
904
904
905
+ # Combine operator expessions onto a Criteria using either
906
+ # an override or ands depending on the status of the
907
+ # Mongoid.overwrite_chained_operators feature flag.
908
+ #
909
+ # @param [ Hash ] The criterion to add to the criteria.
910
+ # @param [ String ] operator The MongoDB operator.
911
+ #
912
+ # @return [ Criteria ] The resulting criteria.
913
+ def and_or_override ( criterion , operator )
914
+ if Mongoid . overwrite_chained_operators
915
+ __override__ ( criterion , operator )
916
+ else
917
+ and_with_operator ( criterion , operator )
918
+ end
919
+ end
920
+
905
921
class << self
906
922
907
923
# Get the methods on the selectable that can be forwarded to from a model.
0 commit comments