mongoid 5.2.1 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +1 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/mongoid/atomic.rb +1 -1
  5. data/lib/mongoid/atomic/modifiers.rb +12 -8
  6. data/lib/mongoid/attributes.rb +1 -2
  7. data/lib/mongoid/attributes/dynamic.rb +3 -2
  8. data/lib/mongoid/attributes/nested.rb +1 -1
  9. data/lib/mongoid/attributes/processing.rb +0 -4
  10. data/lib/mongoid/changeable.rb +1 -1
  11. data/lib/mongoid/clients/options.rb +3 -2
  12. data/lib/mongoid/contextual/atomic.rb +9 -6
  13. data/lib/mongoid/contextual/geo_near.rb +3 -2
  14. data/lib/mongoid/contextual/map_reduce.rb +4 -0
  15. data/lib/mongoid/contextual/memory.rb +1 -1
  16. data/lib/mongoid/contextual/mongo.rb +3 -3
  17. data/lib/mongoid/contextual/none.rb +2 -2
  18. data/lib/mongoid/copyable.rb +0 -4
  19. data/lib/mongoid/criteria.rb +1 -1
  20. data/lib/mongoid/criteria/findable.rb +3 -2
  21. data/lib/mongoid/criteria/includable.rb +2 -2
  22. data/lib/mongoid/errors/delete_restriction.rb +2 -2
  23. data/lib/mongoid/errors/inverse_not_found.rb +1 -1
  24. data/lib/mongoid/extensions/hash.rb +3 -2
  25. data/lib/mongoid/extensions/object.rb +2 -2
  26. data/lib/mongoid/extensions/time.rb +1 -1
  27. data/lib/mongoid/factory.rb +0 -1
  28. data/lib/mongoid/fields/foreign_key.rb +2 -2
  29. data/lib/mongoid/findable.rb +1 -1
  30. data/lib/mongoid/indexable.rb +3 -2
  31. data/lib/mongoid/indexable/specification.rb +1 -1
  32. data/lib/mongoid/interceptable.rb +2 -2
  33. data/lib/mongoid/loggable.rb +1 -1
  34. data/lib/mongoid/matchable.rb +2 -2
  35. data/lib/mongoid/persistable.rb +0 -3
  36. data/lib/mongoid/persistable/creatable.rb +0 -2
  37. data/lib/mongoid/query_cache.rb +5 -1
  38. data/lib/mongoid/relations/accessors.rb +1 -2
  39. data/lib/mongoid/relations/bindings/embedded/in.rb +0 -4
  40. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -8
  41. data/lib/mongoid/relations/bindings/embedded/one.rb +0 -10
  42. data/lib/mongoid/relations/bindings/referenced/many.rb +0 -4
  43. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  44. data/lib/mongoid/relations/builders/nested_attributes/many.rb +1 -1
  45. data/lib/mongoid/relations/conversions.rb +1 -1
  46. data/lib/mongoid/relations/counter_cache.rb +10 -10
  47. data/lib/mongoid/relations/eager/base.rb +4 -4
  48. data/lib/mongoid/relations/embedded/batchable.rb +33 -9
  49. data/lib/mongoid/relations/embedded/in.rb +1 -3
  50. data/lib/mongoid/relations/embedded/many.rb +4 -5
  51. data/lib/mongoid/relations/embedded/one.rb +1 -3
  52. data/lib/mongoid/relations/macros.rb +2 -1
  53. data/lib/mongoid/relations/metadata.rb +3 -3
  54. data/lib/mongoid/relations/nested_builder.rb +1 -1
  55. data/lib/mongoid/relations/proxy.rb +3 -2
  56. data/lib/mongoid/relations/referenced/in.rb +1 -4
  57. data/lib/mongoid/relations/referenced/many.rb +3 -5
  58. data/lib/mongoid/relations/referenced/many_to_many.rb +1 -1
  59. data/lib/mongoid/relations/referenced/one.rb +0 -2
  60. data/lib/mongoid/relations/reflections.rb +2 -2
  61. data/lib/mongoid/scopable.rb +2 -2
  62. data/lib/mongoid/serializable.rb +3 -2
  63. data/lib/mongoid/tasks/database.rb +2 -1
  64. data/lib/mongoid/threaded.rb +4 -4
  65. data/lib/mongoid/validatable.rb +1 -1
  66. data/lib/mongoid/validatable/macros.rb +4 -2
  67. data/lib/mongoid/version.rb +1 -1
  68. data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
  69. data/spec/mongoid/atomic_spec.rb +17 -17
  70. data/spec/mongoid/clients/options_spec.rb +9 -0
  71. data/spec/mongoid/contextual/atomic_spec.rb +3 -3
  72. data/spec/mongoid/persistable/savable_spec.rb +2 -2
  73. data/spec/mongoid/persistable/updatable_spec.rb +2 -2
  74. data/spec/mongoid/positional_spec.rb +10 -10
  75. data/spec/spec_helper.rb +1 -1
  76. metadata +440 -418
  77. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a5ae2a3a33da11eae20a6d6b268ad3e69d601a13
4
- data.tar.gz: 661ff308d0402ab14a5a3920534a1a88f879e3ec
2
+ SHA256:
3
+ metadata.gz: '08c29d43d146e27e4060d618a847e86dce00eb9ed09ccc040176bb36607c85d8'
4
+ data.tar.gz: 36e253fc8ba8ee3b873d3b86b644134a71927761ae6b3d3ee87681815552a22d
5
5
  SHA512:
6
- metadata.gz: a910a280572a11c133f8f3900f878fdb719c548998381bb38c08714c911cbfc1ebfd508ffb84621489cdd8806a8e054cbb55aa041a189267f1fdb30d322d8895
7
- data.tar.gz: 0bfeada8b1bc927fde4414f1accdfe30037b36d56776c5f9b904b041e5356bd4df7a202fbb69e40edda9c165d84a78cdc0f4971ebb7afcad021bd7526d9e6cf0
6
+ metadata.gz: 628fe19e7e6e0472e18d640d807c4aa611da9da1944992ee828717acf82d0d84f35891fcd149bf48d3fe12617e44c1d840323b6d014705d5f6691ff3e54ddbcb
7
+ data.tar.gz: 5ca94d2eff2fc0249af67f84ed337fcee8a6c433e5b2c16b51a25304226960e33ef3b3f634ba96b382f6277d39b4797298af969e1560b4ead3ed308c2272c222
@@ -0,0 +1 @@
1
+ �l�jY~�8�Kb�����6&l'Q�;Q�,�K��7��q���#�����И����Y�������!����|>�z��f0����l�f3���]fxi�Q�I�^~�%�?��W��r�O&laו��m}�`����ܺfy���+ȶ�RyXƅ^f<��r�3�\܁x3�gSղ#� ��j�ჟ�t$� vc�T�t�Zc��5��nG��8��S�[)��j0�"�k�+D�I���6���rZ�d
Binary file
@@ -31,7 +31,7 @@ module Mongoid
31
31
  # @example Add the atomic pull.
32
32
  # person.add_atomic_pull(address)
33
33
  #
34
- # @param [ Document ] The embedded document to pull.
34
+ # @param [ Document ] document The embedded document to pull.
35
35
  #
36
36
  # @since 2.2.0
37
37
  def add_atomic_pull(document)
@@ -68,7 +68,7 @@ module Mongoid
68
68
  modifications.each_pair do |field, value|
69
69
  push_fields[field] = field
70
70
  mods = push_conflict?(field) ? conflicting_pushes : pushes
71
- add_operation(mods, field, Array.wrap(value))
71
+ add_operation(mods, field, {'$each' => Array.wrap(value)})
72
72
  end
73
73
  end
74
74
 
@@ -118,8 +118,12 @@ module Mongoid
118
118
  # @since 2.2.0
119
119
  def add_operation(mods, field, value)
120
120
  if mods.has_key?(field)
121
- value.each do |val|
122
- mods[field].push(val)
121
+ if mods[field].is_a?(Array)
122
+ value.each do |val|
123
+ mods[field].push(val)
124
+ end
125
+ elsif mods[field]['$each']
126
+ mods[field]['$each'].concat(value['$each'])
123
127
  end
124
128
  else
125
129
  mods[field] = value
@@ -190,7 +194,7 @@ module Mongoid
190
194
  #
191
195
  # @since 2.2.0
192
196
  def conflicting_pushes
193
- conflicts["$pushAll"] ||= {}
197
+ conflicts["$push"] ||= {}
194
198
  end
195
199
 
196
200
  # Get the conflicting set modifications.
@@ -277,16 +281,16 @@ module Mongoid
277
281
  self["$pull"] ||= {}
278
282
  end
279
283
 
280
- # Get the $pushAll operations or intialize a new one.
284
+ # Get the $push/$each operations or initialize a new one.
281
285
  #
282
- # @example Get the $pushAll operations.
286
+ # @example Get the $push/$each operations.
283
287
  # modifiers.pushes
284
288
  #
285
- # @return [ Hash ] The $pushAll operations.
289
+ # @return [ Hash ] The $push/$each operations.
286
290
  #
287
291
  # @since 2.1.0
288
292
  def pushes
289
- self["$pushAll"] ||= {}
293
+ self["$push"] ||= {}
290
294
  end
291
295
 
292
296
  # Get the $set operations or intialize a new one.
@@ -218,7 +218,6 @@ module Mongoid
218
218
  # person.attributes = { :title => "Mr." }
219
219
  #
220
220
  # @param [ Hash ] attrs The new attributes to set.
221
- # @param [ Boolean ] guard_protected_attributes False to skip mass assignment protection.
222
221
  #
223
222
  # @since 1.0.0
224
223
  def write_attributes(attrs = nil)
@@ -332,7 +331,7 @@ module Mongoid
332
331
  # the value is valid for given a field.
333
332
  # For now, only Hash and Array fields are validated.
334
333
  #
335
- # @param [ String, Symbol ] name The name of the attribute to validate.
334
+ # @param [ String, Symbol ] access The name of the attribute to validate.
336
335
  # @param [ Object ] value The to be validated.
337
336
  #
338
337
  # @since 3.0.10
@@ -13,7 +13,8 @@ module Mongoid
13
13
  # @example Does this object respond to the method?
14
14
  # person.respond_to?(:title)
15
15
  #
16
- # @param [ Array ] *args The name of the method.
16
+ # @param [ Array ] name The name of the method.
17
+ # @param [ true, false ] include_private
17
18
  #
18
19
  # @return [ true, false ] True if it does, false if not.
19
20
  #
@@ -126,7 +127,7 @@ module Mongoid
126
127
  # document.method_missing(:test)
127
128
  #
128
129
  # @param [ String, Symbol ] name The name of the method.
129
- # @param [ Array ] *args The arguments to the method.
130
+ # @param [ Array ] args The arguments to the method.
130
131
  #
131
132
  # @return [ Object ] The result of the method call.
132
133
  #
@@ -34,7 +34,7 @@ module Mongoid
34
34
  # accepts_nested_attributes_for :addresses, :game, :posts
35
35
  # end
36
36
  #
37
- # @param [ Array<Symbol>, Hash ] *args A list of relation names, followed
37
+ # @param [ Array<Symbol>, Hash ] args A list of relation names, followed
38
38
  # by a hash of options.
39
39
  #
40
40
  # @option *args [ true, false ] :allow_destroy Can deletion occur?
@@ -118,8 +118,6 @@ module Mongoid
118
118
  # @example Process the pending items.
119
119
  # document.process_pending
120
120
  #
121
- # @param [ Hash ] options The mass assignment options.
122
- #
123
121
  # @since 2.0.0.rc.7
124
122
  def process_pending
125
123
  process_nested and process_relations
@@ -132,8 +130,6 @@ module Mongoid
132
130
  # @example Process the relations.
133
131
  # document.process_relations
134
132
  #
135
- # @param [ Hash ] options The mass assignment options.
136
- #
137
133
  # @since 2.0.0.rc.7
138
134
  def process_relations
139
135
  pending_relations.each_pair do |name, value|
@@ -265,7 +265,7 @@ module Mongoid
265
265
  # Model.create_dirty_methods("name", "name")
266
266
  #
267
267
  # @param [ String ] name The name of the field.
268
- # @param [ String ] name The name of the accessor.
268
+ # @param [ String ] meth The name of the accessor.
269
269
  #
270
270
  # @return [ Module ] The fields module.
271
271
  #
@@ -135,7 +135,7 @@ module Mongoid
135
135
  # Threaded.set_options(Band, { write: { w: 3 }})
136
136
  #
137
137
  # @param [ Class ] klass The model class.
138
- # @param [ Mongo::Client ] client The client with options.
138
+ # @param [ Mongo::Client ] options The options.
139
139
  #
140
140
  # @return [ Mongo::Client, nil ] The client or nil if the cluster does not change.
141
141
  #
@@ -252,8 +252,9 @@ module Mongoid
252
252
  def with(options)
253
253
  if block_given?
254
254
  set_options(self, options)
255
- yield self
255
+ result = yield self
256
256
  unset_options(self)
257
+ result
257
258
  else
258
259
  Proxy.new(self, (persistence_options || {}).merge(options))
259
260
  end
@@ -106,18 +106,21 @@ module Mongoid
106
106
  view.update_many("$push" => collect_operations(pushes))
107
107
  end
108
108
 
109
- # Perform an atomic $pushAll operation on the matching documents.
109
+ # Perform an atomic $push/$each operation on the matching documents.
110
110
  #
111
111
  # @example Push the values to the matching docs.
112
- # context.push(members: [ "Alan", "Fletch" ])
112
+ # context.push_each(members: [ "Alan", "Fletch" ])
113
113
  #
114
114
  # @param [ Hash ] pushes The operations.
115
115
  #
116
116
  # @return [ nil ] Nil.
117
117
  #
118
- # @since 3.0.0
119
- def push_all(pushes)
120
- view.update_many("$pushAll" => collect_operations(pushes))
118
+ # @since 5.4.0
119
+ def push_each(pushes)
120
+ push_each_updates = collect_operations(pushes).each.inject({}) do |ops, (field, elements)|
121
+ ops.merge!(field => { '$each' => elements })
122
+ end
123
+ view.update_many("$push" => push_each_updates)
121
124
  end
122
125
 
123
126
  # Perform an atomic $rename of fields on the matching documents.
@@ -157,7 +160,7 @@ module Mongoid
157
160
  # @example Unset the field on the matches.
158
161
  # context.unset(:name)
159
162
  #
160
- # @param [ String, Symbol, Array ] fields The name of the fields.
163
+ # @param [ String, Symbol, Array ] args The name of the fields.
161
164
  #
162
165
  # @return [ nil ] Nil.
163
166
  #
@@ -63,9 +63,10 @@ module Mongoid
63
63
  # @example Initialize the new map/reduce.
64
64
  # MapReduce.new(criteria, map, reduce)
65
65
  #
66
+ # @param [ Mongo::Collection ] collection The collection to run the
67
+ # operation on.
66
68
  # @param [ Criteria ] criteria The Mongoid criteria.
67
- # @param [ String ] map The map js function.
68
- # @param [ String ] reduce The reduce js function.
69
+ # @param [ String ] near
69
70
  #
70
71
  # @since 3.0.0
71
72
  def initialize(collection, criteria, near)
@@ -111,6 +111,7 @@ module Mongoid
111
111
  end
112
112
 
113
113
  # Specifies where the map/reduce output is to be stored.
114
+ # Please see MongoDB documentation for supported map reduce options.
114
115
  #
115
116
  # @example Store output in memory.
116
117
  # map_reduce.out(inline: 1)
@@ -124,6 +125,9 @@ module Mongoid
124
125
  # @example Store output in a collection, reducing existing documents.
125
126
  # map_reduce.out(reduce: "collection_name")
126
127
  #
128
+ # @example Return results from map reduce.
129
+ # map_reduce.out(inline: 1)
130
+ #
127
131
  # @param [ Hash ] location The place to store the results.
128
132
  #
129
133
  # @return [ MapReduce ] The map/reduce object.
@@ -140,7 +140,7 @@ module Mongoid
140
140
  # @example Create the new context.
141
141
  # Memory.new(criteria)
142
142
  #
143
- # @param [ Criteria ] The criteria.
143
+ # @param [ Criteria ] criteria The criteria.
144
144
  #
145
145
  # @since 3.0.0
146
146
  def initialize(criteria)
@@ -197,7 +197,7 @@ module Mongoid
197
197
  # @example Execute the command.
198
198
  # context.find_one_and_update({ likes: 1 })
199
199
  #
200
- # @param [ Hash ] update The updates.
200
+ # @param [ Hash ] replacement The replacement.
201
201
  # @param [ Hash ] options The command options.
202
202
  #
203
203
  # @option options [ :before, :after ] :return_document Return the updated document
@@ -298,7 +298,7 @@ module Mongoid
298
298
  # @example Map by some field.
299
299
  # context.map(:field1)
300
300
  #
301
- # @exmaple Map with block.
301
+ # @example Map with block.
302
302
  # context.map(&:field1)
303
303
  #
304
304
  # @param [ Symbol ] field The field name.
@@ -407,7 +407,7 @@ module Mongoid
407
407
  # @note This method will return the raw db values - it performs no custom
408
408
  # serialization.
409
409
  #
410
- # @param [ String, Symbol, Array ] field Fields to pluck.
410
+ # @param [ String, Symbol, Array ] fields Fields to pluck.
411
411
  #
412
412
  # @return [ Array<Object, Array> ] The plucked values.
413
413
  #
@@ -57,7 +57,7 @@ module Mongoid
57
57
  # @example Allow pluck for null context.
58
58
  # context.pluck(:name)
59
59
  #
60
- # @param [ String, Symbol, Array ] field or fields to pluck.
60
+ # @param [ String, Symbol, Array ] args Field or fields to pluck.
61
61
  #
62
62
  # @return [ Array ] Emtpy Array
63
63
  def pluck(*args)
@@ -69,7 +69,7 @@ module Mongoid
69
69
  # @example Create the new context.
70
70
  # Null.new(criteria)
71
71
  #
72
- # @param [ Criteria ] The criteria.
72
+ # @param [ Criteria ] criteria The criteria.
73
73
  #
74
74
  # @since 4.0.0
75
75
  def initialize(criteria)
@@ -14,8 +14,6 @@ module Mongoid
14
14
  # @example Clone the document.
15
15
  # document.clone
16
16
  #
17
- # @param [ Document ] other The document getting cloned.
18
- #
19
17
  # @return [ Document ] The new document.
20
18
  def clone
21
19
  # @note This next line is here to address #2704, even though having an
@@ -40,8 +38,6 @@ module Mongoid
40
38
  # @example clone document
41
39
  # model.clone_document
42
40
  #
43
- # @param [ Hash ] dcoument The document with hash format
44
- #
45
41
  # @since 3.0.22
46
42
  def clone_document
47
43
  attrs = as_document.__deep_copy__
@@ -386,7 +386,7 @@ module Mongoid
386
386
  # @example Add a javascript selection.
387
387
  # criteria.where("this.name == 'syd'")
388
388
  #
389
- # @param [ String, Hash ] criterion The javascript or standard selection.
389
+ # @param [ String, Hash ] expression The javascript or standard selection.
390
390
  #
391
391
  # @raise [ UnsupportedJavascript ] If provided a string and the criteria
392
392
  # is embedded.
@@ -8,7 +8,8 @@ module Mongoid
8
8
  # @example Execute or raise
9
9
  # criteria.execute_or_raise(id)
10
10
  #
11
- # @param [ Object ] args The arguments passed.
11
+ # @param [ Object ] ids The arguments passed.
12
+ # @param [ true, false ] multi Whether there arguments were a list.
12
13
  #
13
14
  # @raise [ Errors::DocumentNotFound ] If nothing returned.
14
15
  #
@@ -66,7 +67,7 @@ module Mongoid
66
67
  # @example Get the documents from the map or criteria.
67
68
  # criteria.multiple_from_map_or_db(ids)
68
69
  #
69
- # @param [ ids ] The searched ids.
70
+ # @param [ Array<Object> ] ids The searched ids.
70
71
  #
71
72
  # @return [ Array<Document> ] The found documents.
72
73
  def multiple_from_db(ids)
@@ -48,7 +48,7 @@ module Mongoid
48
48
  # @example Set the inclusions.
49
49
  # criteria.inclusions = [ meta ]
50
50
  #
51
- # @param [ Array<Metadata> ] The inclusions.
51
+ # @param [ Array<Metadata> ] value The inclusions.
52
52
  #
53
53
  # @return [ Array<Metadata> ] The new inclusions.
54
54
  #
@@ -65,7 +65,7 @@ module Mongoid
65
65
  # criteria.add_inclusion(Person, :posts)
66
66
  #
67
67
  # @param [ Class, String, Symbol ] _klass The class or string/symbol of the class name.
68
- # @param [ Symbol ] relation The relation.
68
+ # @param [ Symbol ] metadata The relation.
69
69
  #
70
70
  # @raise [ Errors::InvalidIncludes ] If no relation is found.
71
71
  #
@@ -11,8 +11,8 @@ module Mongoid
11
11
  # @example Create the new callbacks error.
12
12
  # Callbacks.new(Post, :create!)
13
13
  #
14
- # @param [ Class ] klass The class of the document.
15
- # @param [ Symbol ] method The name of the method.
14
+ # @param [ Class ] document
15
+ # @param [ Symbol ] relation
16
16
  #
17
17
  # @since 3.0.0
18
18
  def initialize(document, relation)
@@ -12,7 +12,7 @@ module Mongoid
12
12
  #
13
13
  # @param [ Class ] base The base class.
14
14
  # @param [ Symbol ] name The name of the relation.
15
- # @param [ Class ] The child class.
15
+ # @param [ Class ] klass The child class.
16
16
  # @param [ Symbol ] inverse The attempted inverse key.
17
17
  #
18
18
  # @since 3.0.0
@@ -161,10 +161,11 @@ module Mongoid
161
161
  # @api private
162
162
  #
163
163
  # @example Mongoize for the klass, field and value.
164
- # {}.mongoize_for(Band, "name", "test")
164
+ # {}.mongoize_for("$push", Band, "name", "test")
165
165
  #
166
+ # @param [ String ] operator The operator.
166
167
  # @param [ Class ] klass The model class.
167
- # @param [ String, Symbol ] The field key.
168
+ # @param [ String, Symbol ] key The field key.
168
169
  # @param [ Object ] value The value to mongoize.
169
170
  #
170
171
  # @return [ Object ] The mongoized value.
@@ -94,7 +94,7 @@ module Mongoid
94
94
  # object.do_or_do_not(:use, "The Force")
95
95
  #
96
96
  # @param [ String, Symbol ] name The method name.
97
- # @param [ Array ] *args The arguments.
97
+ # @param [ Array ] args The arguments.
98
98
  #
99
99
  # @return [ Object, nil ] The result of the method call or nil if the
100
100
  # method does not exist.
@@ -209,7 +209,7 @@ module Mongoid
209
209
  # object.you_must(:use, "The Force")
210
210
  #
211
211
  # @param [ String, Symbol ] name The method name.
212
- # @param [ Array ] *args The arguments.
212
+ # @param [ Array ] args The arguments.
213
213
  #
214
214
  # @return [ Object, nil ] The result of the method call or nil if the
215
215
  # method does not exist. Nil if the object is frozen.
@@ -27,7 +27,7 @@ module Mongoid
27
27
  # @example Get the configured time.
28
28
  # ::Time.configured
29
29
  #
30
- # @retun [ Time ] The configured time.
30
+ # @return [ Time ] The configured time.
31
31
  #
32
32
  # @since 3.0.0
33
33
  def configured
@@ -14,7 +14,6 @@ module Mongoid
14
14
  #
15
15
  # @param [ Class ] klass The class to instantiate from if _type is not present.
16
16
  # @param [ Hash ] attributes The document attributes.
17
- # @param [ Hash ] options The mass assignment scoping options.
18
17
  #
19
18
  # @return [ Document ] The instantiated document.
20
19
  def build(klass, attributes = nil)
@@ -14,8 +14,8 @@ module Mongoid
14
14
  # @param [ String ] name The name of the field.
15
15
  # @param [ String ] key The atomic location of the field.
16
16
  # @param [ Hash ] mods The current modifications.
17
- # @param [ Array ] new The new elements to add.
18
- # @param [ Array ] old The old elements getting removed.
17
+ # @param [ Array ] new_elements The new elements to add.
18
+ # @param [ Array ] old_elements The old elements getting removed.
19
19
  #
20
20
  # @since 2.4.0
21
21
  def add_atomic_changes(document, name, key, mods, new_elements, old_elements)