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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/lib/mongoid/atomic.rb +1 -1
- data/lib/mongoid/atomic/modifiers.rb +12 -8
- data/lib/mongoid/attributes.rb +1 -2
- data/lib/mongoid/attributes/dynamic.rb +3 -2
- data/lib/mongoid/attributes/nested.rb +1 -1
- data/lib/mongoid/attributes/processing.rb +0 -4
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +3 -2
- data/lib/mongoid/contextual/atomic.rb +9 -6
- data/lib/mongoid/contextual/geo_near.rb +3 -2
- data/lib/mongoid/contextual/map_reduce.rb +4 -0
- data/lib/mongoid/contextual/memory.rb +1 -1
- data/lib/mongoid/contextual/mongo.rb +3 -3
- data/lib/mongoid/contextual/none.rb +2 -2
- data/lib/mongoid/copyable.rb +0 -4
- data/lib/mongoid/criteria.rb +1 -1
- data/lib/mongoid/criteria/findable.rb +3 -2
- data/lib/mongoid/criteria/includable.rb +2 -2
- data/lib/mongoid/errors/delete_restriction.rb +2 -2
- data/lib/mongoid/errors/inverse_not_found.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +3 -2
- data/lib/mongoid/extensions/object.rb +2 -2
- data/lib/mongoid/extensions/time.rb +1 -1
- data/lib/mongoid/factory.rb +0 -1
- data/lib/mongoid/fields/foreign_key.rb +2 -2
- data/lib/mongoid/findable.rb +1 -1
- data/lib/mongoid/indexable.rb +3 -2
- data/lib/mongoid/indexable/specification.rb +1 -1
- data/lib/mongoid/interceptable.rb +2 -2
- data/lib/mongoid/loggable.rb +1 -1
- data/lib/mongoid/matchable.rb +2 -2
- data/lib/mongoid/persistable.rb +0 -3
- data/lib/mongoid/persistable/creatable.rb +0 -2
- data/lib/mongoid/query_cache.rb +5 -1
- data/lib/mongoid/relations/accessors.rb +1 -2
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -4
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -8
- data/lib/mongoid/relations/bindings/embedded/one.rb +0 -10
- data/lib/mongoid/relations/bindings/referenced/many.rb +0 -4
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +10 -10
- data/lib/mongoid/relations/eager/base.rb +4 -4
- data/lib/mongoid/relations/embedded/batchable.rb +33 -9
- data/lib/mongoid/relations/embedded/in.rb +1 -3
- data/lib/mongoid/relations/embedded/many.rb +4 -5
- data/lib/mongoid/relations/embedded/one.rb +1 -3
- data/lib/mongoid/relations/macros.rb +2 -1
- data/lib/mongoid/relations/metadata.rb +3 -3
- data/lib/mongoid/relations/nested_builder.rb +1 -1
- data/lib/mongoid/relations/proxy.rb +3 -2
- data/lib/mongoid/relations/referenced/in.rb +1 -4
- data/lib/mongoid/relations/referenced/many.rb +3 -5
- data/lib/mongoid/relations/referenced/many_to_many.rb +1 -1
- data/lib/mongoid/relations/referenced/one.rb +0 -2
- data/lib/mongoid/relations/reflections.rb +2 -2
- data/lib/mongoid/scopable.rb +2 -2
- data/lib/mongoid/serializable.rb +3 -2
- data/lib/mongoid/tasks/database.rb +2 -1
- data/lib/mongoid/threaded.rb +4 -4
- data/lib/mongoid/validatable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +4 -2
- data/lib/mongoid/version.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
- data/spec/mongoid/atomic_spec.rb +17 -17
- data/spec/mongoid/clients/options_spec.rb +9 -0
- data/spec/mongoid/contextual/atomic_spec.rb +3 -3
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/updatable_spec.rb +2 -2
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/spec_helper.rb +1 -1
- metadata +440 -418
- metadata.gz.sig +0 -0
@@ -19,7 +19,8 @@ module Mongoid
|
|
19
19
|
# @example Push a document.
|
20
20
|
# person.addresses.push(address)
|
21
21
|
#
|
22
|
-
# @param [ Document, Array<Document> ]
|
22
|
+
# @param [ Document, Array<Document> ] args Any number of documents.
|
23
|
+
#
|
23
24
|
def <<(*args)
|
24
25
|
docs = args.flatten
|
25
26
|
return concat(docs) if docs.size > 1
|
@@ -59,7 +60,7 @@ module Mongoid
|
|
59
60
|
#
|
60
61
|
# @since 2.4.0
|
61
62
|
def concat(docs)
|
62
|
-
|
63
|
+
batch_push(docs) unless docs.empty?
|
63
64
|
self
|
64
65
|
end
|
65
66
|
|
@@ -337,8 +338,6 @@ module Mongoid
|
|
337
338
|
# @example Create the binding.
|
338
339
|
# relation.binding([ address ])
|
339
340
|
#
|
340
|
-
# @param [ Array<Document> ] new_target The new documents to bind with.
|
341
|
-
#
|
342
341
|
# @return [ Binding ] The many binding.
|
343
342
|
#
|
344
343
|
# @since 2.0.0.rc.1
|
@@ -461,7 +460,7 @@ module Mongoid
|
|
461
460
|
# relation.remove_all({ :num => 1 }, true)
|
462
461
|
#
|
463
462
|
# @param [ Hash ] conditions Conditions to filter by.
|
464
|
-
# @param [ true, false ]
|
463
|
+
# @param [ true, false ] method
|
465
464
|
#
|
466
465
|
# @return [ Integer ] The number of documents removed.
|
467
466
|
def remove_all(conditions = {}, method = :delete)
|
@@ -31,7 +31,7 @@ module Mongoid
|
|
31
31
|
# @example Substitute the new document.
|
32
32
|
# person.name.substitute(new_name)
|
33
33
|
#
|
34
|
-
# @param [ Document ]
|
34
|
+
# @param [ Document ] replacement A document to replace the target.
|
35
35
|
#
|
36
36
|
# @return [ Document, nil ] The relation or nil.
|
37
37
|
#
|
@@ -61,8 +61,6 @@ module Mongoid
|
|
61
61
|
# @example Get the binding.
|
62
62
|
# relation.binding([ address ])
|
63
63
|
#
|
64
|
-
# @param [ Document ] new_target The new document to bind with.
|
65
|
-
#
|
66
64
|
# @return [ Binding ] The relation's binding.
|
67
65
|
#
|
68
66
|
# @since 2.0.0.rc.1
|
@@ -326,7 +326,8 @@ module Mongoid
|
|
326
326
|
# Model.reference_one_to_one(:name, meta)
|
327
327
|
#
|
328
328
|
# @param [ Symbol ] name The name of the relation.
|
329
|
-
# @param [
|
329
|
+
# @param [ Symbol ] options The association options.
|
330
|
+
# @param [ Metadata ] relation The relation.
|
330
331
|
#
|
331
332
|
# @return [ Class ] The model class.
|
332
333
|
#
|
@@ -920,7 +920,7 @@ module Mongoid
|
|
920
920
|
# @example Find the module from the parts.
|
921
921
|
# metadata.find_from_parts([ "Namespace", "Module" ])
|
922
922
|
#
|
923
|
-
# @param [ Array<String> ] The modules.
|
923
|
+
# @param [ Array<String> ] modules The modules.
|
924
924
|
#
|
925
925
|
# @return [ String ] The matching module.
|
926
926
|
#
|
@@ -1127,7 +1127,7 @@ module Mongoid
|
|
1127
1127
|
# @example Find the inverses.
|
1128
1128
|
# metadata.lookup_inverses(other)
|
1129
1129
|
#
|
1130
|
-
# @param [ Document ]
|
1130
|
+
# @param [ Document ] other The inverse document.
|
1131
1131
|
#
|
1132
1132
|
# @return [ Array<String> ] The inverse names.
|
1133
1133
|
def lookup_inverses(other)
|
@@ -1150,7 +1150,7 @@ module Mongoid
|
|
1150
1150
|
# @example Find the inverse.
|
1151
1151
|
# metadata.lookup_inverse(other)
|
1152
1152
|
#
|
1153
|
-
# @param [ Document ]
|
1153
|
+
# @param [ Document ] other The inverse document.
|
1154
1154
|
#
|
1155
1155
|
# @return [ String ] The inverse name.
|
1156
1156
|
#
|
@@ -25,7 +25,7 @@ module Mongoid
|
|
25
25
|
# @example Is there a reject proc?
|
26
26
|
# builder.reject?
|
27
27
|
#
|
28
|
-
# @param The parent document of the relation
|
28
|
+
# @param [ Document ] document The parent document of the relation
|
29
29
|
# @param [ Hash ] attrs The attributes to check for rejection.
|
30
30
|
#
|
31
31
|
# @return [ true, false ] True and call proc or method if rejectable, false if not.
|
@@ -145,7 +145,8 @@ module Mongoid
|
|
145
145
|
# to the target of the proxy. This can be overridden in special cases.
|
146
146
|
#
|
147
147
|
# @param [ String, Symbol ] name The name of the method.
|
148
|
-
# @param [ Array ]
|
148
|
+
# @param [ Array ] args The arguments passed to the method.
|
149
|
+
#
|
149
150
|
def method_missing(name, *args, &block)
|
150
151
|
target.send(name, *args, &block)
|
151
152
|
end
|
@@ -183,7 +184,7 @@ module Mongoid
|
|
183
184
|
# @example returns the before_add callback method name
|
184
185
|
# callback_method(:before_add)
|
185
186
|
#
|
186
|
-
# @param [ Symbol ]
|
187
|
+
# @param [ Symbol ] callback_name Which callback
|
187
188
|
#
|
188
189
|
# @return [ Array ] with callback methods to be executed, the array may have symbols and Procs
|
189
190
|
#
|
@@ -44,8 +44,7 @@ module Mongoid
|
|
44
44
|
# @example Substitute the relation.
|
45
45
|
# name.substitute(new_name)
|
46
46
|
#
|
47
|
-
# @param [ Document, Array<Document> ]
|
48
|
-
# @param [ true, false ] building Are we in build mode?
|
47
|
+
# @param [ Document, Array<Document> ] replacement The replacement.
|
49
48
|
#
|
50
49
|
# @return [ In, nil ] The relation or nil.
|
51
50
|
#
|
@@ -65,8 +64,6 @@ module Mongoid
|
|
65
64
|
# @example Get the binding object.
|
66
65
|
# binding([ address ])
|
67
66
|
#
|
68
|
-
# @param [ Document, Array<Document> ] new_target The replacement.
|
69
|
-
#
|
70
67
|
# @return [ Binding ] The binding object.
|
71
68
|
#
|
72
69
|
# @since 2.0.0.rc.1
|
@@ -22,7 +22,7 @@ module Mongoid
|
|
22
22
|
# @example Concat with other documents.
|
23
23
|
# person.posts.concat([ post_one, post_two ])
|
24
24
|
#
|
25
|
-
# @param [ Document, Array<Document> ]
|
25
|
+
# @param [ Document, Array<Document> ] args Any number of documents.
|
26
26
|
#
|
27
27
|
# @return [ Array<Document> ] The loaded docs.
|
28
28
|
#
|
@@ -190,7 +190,7 @@ module Mongoid
|
|
190
190
|
# @note This will keep matching documents in memory for iteration
|
191
191
|
# later.
|
192
192
|
#
|
193
|
-
# @param [ BSON::ObjectId, Array<BSON::ObjectId> ]
|
193
|
+
# @param [ BSON::ObjectId, Array<BSON::ObjectId> ] args The ids.
|
194
194
|
#
|
195
195
|
# @return [ Document, Criteria ] The matching document(s).
|
196
196
|
#
|
@@ -368,8 +368,6 @@ module Mongoid
|
|
368
368
|
# @example Get the binding.
|
369
369
|
# relation.binding([ address ])
|
370
370
|
#
|
371
|
-
# @param [ Array<Document> ] new_target The new documents to bind with.
|
372
|
-
#
|
373
371
|
# @return [ Binding ] The binding.
|
374
372
|
#
|
375
373
|
# @since 2.0.0.rc.1
|
@@ -493,7 +491,7 @@ module Mongoid
|
|
493
491
|
# person.posts.delete_all({ :title => "Testing" })
|
494
492
|
#
|
495
493
|
# @param [ Hash ] conditions Optional conditions to delete with.
|
496
|
-
# @param [ Symbol ] The deletion method to call.
|
494
|
+
# @param [ Symbol ] method The deletion method to call.
|
497
495
|
#
|
498
496
|
# @return [ Integer ] The number of documents deleted.
|
499
497
|
#
|
@@ -19,7 +19,7 @@ module Mongoid
|
|
19
19
|
# @example Concat with other documents.
|
20
20
|
# person.posts.concat([ post_one, post_two ])
|
21
21
|
#
|
22
|
-
# @param [ Document, Array<Document> ]
|
22
|
+
# @param [ Document, Array<Document> ] args Any number of documents.
|
23
23
|
#
|
24
24
|
# @return [ Array<Document> ] The loaded docs.
|
25
25
|
#
|
@@ -69,8 +69,6 @@ module Mongoid
|
|
69
69
|
# @example Get the binding.
|
70
70
|
# relation.binding([ address ])
|
71
71
|
#
|
72
|
-
# @param [ Document ] new_target The new target of the relation.
|
73
|
-
#
|
74
72
|
# @return [ Binding ] The binding object.
|
75
73
|
def binding
|
76
74
|
Bindings::Referenced::One.new(base, target, __metadata)
|
@@ -24,7 +24,7 @@ module Mongoid
|
|
24
24
|
# @example Find multiple relation metadata by macro.
|
25
25
|
# person.reflect_on_all_associations(:embeds_many)
|
26
26
|
#
|
27
|
-
# @param [ Array<Symbol> ]
|
27
|
+
# @param [ Array<Symbol> ] macros The relation macros.
|
28
28
|
#
|
29
29
|
# @return [ Array<Metadata> ] The matching relation metadata.
|
30
30
|
def reflect_on_all_associations(*macros)
|
@@ -50,7 +50,7 @@ module Mongoid
|
|
50
50
|
# @example Find multiple relation metadata by macro.
|
51
51
|
# Person.reflect_on_all_associations(:embeds_many)
|
52
52
|
#
|
53
|
-
# @param [ Array<Symbol> ]
|
53
|
+
# @param [ Array<Symbol> ] macros The relation macros.
|
54
54
|
#
|
55
55
|
# @return [ Array<Metadata> ] The matching relation metadata.
|
56
56
|
def reflect_on_all_associations(*macros)
|
data/lib/mongoid/scopable.rb
CHANGED
@@ -80,7 +80,7 @@ module Mongoid
|
|
80
80
|
# default_scope ->{ where(active: true) }
|
81
81
|
# end
|
82
82
|
#
|
83
|
-
# @param [ Proc, Criteria ]
|
83
|
+
# @param [ Proc, Criteria ] value The default scope.
|
84
84
|
#
|
85
85
|
# @raise [ Errors::InvalidScope ] If the scope is not a proc or criteria.
|
86
86
|
#
|
@@ -136,7 +136,7 @@ module Mongoid
|
|
136
136
|
# end
|
137
137
|
#
|
138
138
|
# @param [ Symbol ] name The name of the scope.
|
139
|
-
# @param [ Proc ]
|
139
|
+
# @param [ Proc ] value The conditions of the scope.
|
140
140
|
#
|
141
141
|
# @raise [ Errors::InvalidScope ] If the scope is not a proc.
|
142
142
|
# @raise [ Errors::ScopeOverwrite ] If the scope name already exists.
|
data/lib/mongoid/serializable.rb
CHANGED
@@ -138,7 +138,7 @@ module Mongoid
|
|
138
138
|
# @example Get the relation names.
|
139
139
|
# document.relation_names(:include => [ :addresses ])
|
140
140
|
#
|
141
|
-
# @param [ Hash, Symbol, Array<Symbol ] inclusions The inclusions.
|
141
|
+
# @param [ Hash, Symbol, Array<Symbol> ] inclusions The inclusions.
|
142
142
|
#
|
143
143
|
# @return [ Array<Symbol> ] The names of the included relations.
|
144
144
|
#
|
@@ -153,7 +153,8 @@ module Mongoid
|
|
153
153
|
# @example Get the relation options.
|
154
154
|
# document.relation_names(:include => [ :addresses ])
|
155
155
|
#
|
156
|
-
# @param [ Hash, Symbol, Array<Symbol ] inclusions The inclusions.
|
156
|
+
# @param [ Hash, Symbol, Array<Symbol> ] inclusions The inclusions.
|
157
|
+
# @param [ Hash ] options The options.
|
157
158
|
# @param [ Symbol ] name The name of the relation.
|
158
159
|
#
|
159
160
|
# @return [ Hash ] The options for the relation.
|
@@ -36,7 +36,8 @@ module Mongoid
|
|
36
36
|
# @example Return the list of unused indexes.
|
37
37
|
# Mongoid::Tasks::Database.undefined_indexes
|
38
38
|
#
|
39
|
-
# @return
|
39
|
+
# @return [ Array<Hash> ] The list of undefined indexes by model.
|
40
|
+
#
|
40
41
|
def undefined_indexes(models = ::Mongoid.models)
|
41
42
|
undefined_by_model = {}
|
42
43
|
|
data/lib/mongoid/threaded.rb
CHANGED
@@ -64,7 +64,7 @@ module Mongoid
|
|
64
64
|
# @example Set the global database override.
|
65
65
|
# Threaded.database_override = :testing
|
66
66
|
#
|
67
|
-
# @param [ String, Symbol ] The global override name.
|
67
|
+
# @param [ String, Symbol ] name The global override name.
|
68
68
|
#
|
69
69
|
# @return [ String, Symbol ] The override.
|
70
70
|
#
|
@@ -180,7 +180,7 @@ module Mongoid
|
|
180
180
|
# @example Set the global client override.
|
181
181
|
# Threaded.client_override = :testing
|
182
182
|
#
|
183
|
-
# @param [ String, Symbol ] The global override name.
|
183
|
+
# @param [ String, Symbol ] name The global override name.
|
184
184
|
#
|
185
185
|
# @return [ String, Symbol ] The override.
|
186
186
|
#
|
@@ -304,7 +304,7 @@ module Mongoid
|
|
304
304
|
# @example Get all autosaves.
|
305
305
|
# Threaded.autosaves_for(Person)
|
306
306
|
#
|
307
|
-
# @param [ Class ] The class to check.
|
307
|
+
# @param [ Class ] klass The class to check.
|
308
308
|
#
|
309
309
|
# @return [ Array ] The current autosaves.
|
310
310
|
#
|
@@ -317,7 +317,7 @@ module Mongoid
|
|
317
317
|
# @example Get all validations.
|
318
318
|
# Threaded.validations_for(Person)
|
319
319
|
#
|
320
|
-
# @param [ Class ] The class to check.
|
320
|
+
# @param [ Class ] klass The class to check.
|
321
321
|
#
|
322
322
|
# @return [ Array ] The current validations.
|
323
323
|
#
|
data/lib/mongoid/validatable.rb
CHANGED
@@ -144,7 +144,7 @@ module Mongoid
|
|
144
144
|
# @example Validate with a specific validator.
|
145
145
|
# validates_with MyValidator, on: :create
|
146
146
|
#
|
147
|
-
# @param [ Class<Array>, Hash ]
|
147
|
+
# @param [ Class<Array>, Hash ] args The validator classes and options.
|
148
148
|
#
|
149
149
|
# @note See ActiveModel::Validations::With for full options. This is
|
150
150
|
# overridden to add autosave functionality when presence validation is
|
@@ -17,7 +17,8 @@ module Mongoid
|
|
17
17
|
# validates_associated :name, :addresses
|
18
18
|
# end
|
19
19
|
#
|
20
|
-
# @param [ Array ]
|
20
|
+
# @param [ Array ] args The arguments to pass to the validator.
|
21
|
+
#
|
21
22
|
def validates_associated(*args)
|
22
23
|
validates_with(AssociatedValidator, _merge_attributes(args))
|
23
24
|
end
|
@@ -34,7 +35,8 @@ module Mongoid
|
|
34
35
|
# validates_uniqueness_of :title
|
35
36
|
# end
|
36
37
|
#
|
37
|
-
# @param [ Array ]
|
38
|
+
# @param [ Array ] args The arguments to pass to the validator.
|
39
|
+
#
|
38
40
|
def validates_uniqueness_of(*args)
|
39
41
|
validates_with(UniquenessValidator, _merge_attributes(args))
|
40
42
|
end
|
data/lib/mongoid/version.rb
CHANGED
@@ -211,10 +211,10 @@ describe Mongoid::Atomic::Modifiers do
|
|
211
211
|
|
212
212
|
it "adds the push all modifiers" do
|
213
213
|
expect(modifiers).to eq(
|
214
|
-
{ "$
|
215
|
-
{ "addresses" => [
|
214
|
+
{ "$push" =>
|
215
|
+
{ "addresses" => { '$each' => [
|
216
216
|
{ "street" => "Oxford St" }
|
217
|
-
]
|
217
|
+
] }
|
218
218
|
}
|
219
219
|
}
|
220
220
|
)
|
@@ -238,11 +238,11 @@ describe Mongoid::Atomic::Modifiers do
|
|
238
238
|
|
239
239
|
it "adds the push all modifiers" do
|
240
240
|
expect(modifiers).to eq(
|
241
|
-
{ "$
|
242
|
-
{ "addresses" => [
|
241
|
+
{ "$push" =>
|
242
|
+
{ "addresses" => { '$each' => [
|
243
243
|
{ "street" => "Hobrechtstr." },
|
244
244
|
{ "street" => "Pflugerstr." }
|
245
|
-
]
|
245
|
+
] }
|
246
246
|
}
|
247
247
|
}
|
248
248
|
)
|
@@ -270,10 +270,10 @@ describe Mongoid::Atomic::Modifiers do
|
|
270
270
|
it "adds the push all modifiers to the conflicts hash" do
|
271
271
|
expect(modifiers).to eq(
|
272
272
|
{ "$set" => { "addresses.0.street" => "Bond" },
|
273
|
-
conflicts: { "$
|
274
|
-
{ "addresses" => [
|
273
|
+
conflicts: { "$push" =>
|
274
|
+
{ "addresses" => { '$each' => [
|
275
275
|
{ "street" => "Oxford St" }
|
276
|
-
]
|
276
|
+
] }
|
277
277
|
}
|
278
278
|
}
|
279
279
|
}
|
@@ -300,10 +300,10 @@ describe Mongoid::Atomic::Modifiers do
|
|
300
300
|
expect(modifiers).to eq(
|
301
301
|
{ "$pullAll" => {
|
302
302
|
"addresses" => { "street" => "Bond St" }},
|
303
|
-
conflicts: { "$
|
304
|
-
{ "addresses" => [
|
303
|
+
conflicts: { "$push" =>
|
304
|
+
{ "addresses" => { '$each' => [
|
305
305
|
{ "street" => "Oxford St" }
|
306
|
-
]
|
306
|
+
] }
|
307
307
|
}
|
308
308
|
}
|
309
309
|
}
|
@@ -328,12 +328,12 @@ describe Mongoid::Atomic::Modifiers do
|
|
328
328
|
|
329
329
|
it "adds the push all modifiers to the conflicts hash" do
|
330
330
|
expect(modifiers).to eq(
|
331
|
-
{ "$
|
332
|
-
"addresses.0.locations" => [{ "street" => "Bond St" }]},
|
333
|
-
conflicts: { "$
|
334
|
-
{ "addresses" => [
|
331
|
+
{ "$push" => {
|
332
|
+
"addresses.0.locations" => {'$each' => [{ "street" => "Bond St" }]}},
|
333
|
+
conflicts: { "$push" =>
|
334
|
+
{ "addresses" => { '$each' => [
|
335
335
|
{ "street" => "Oxford St" }
|
336
|
-
]
|
336
|
+
] }
|
337
337
|
}
|
338
338
|
}
|
339
339
|
}
|
data/spec/mongoid/atomic_spec.rb
CHANGED
@@ -76,13 +76,13 @@ describe Mongoid::Atomic do
|
|
76
76
|
person.addresses.build(street: "Oxford St")
|
77
77
|
end
|
78
78
|
|
79
|
-
it "returns a $set and $
|
79
|
+
it "returns a $set and $push and $each for modifications" do
|
80
80
|
expect(person.atomic_updates).to eq(
|
81
81
|
{
|
82
82
|
"$set" => { "title" => "Sir" },
|
83
|
-
"$
|
83
|
+
"$push" => { "addresses" => {'$each' => [
|
84
84
|
{ "_id" => "oxford-st", "street" => "Oxford St" }
|
85
|
-
]}
|
85
|
+
] } }
|
86
86
|
}
|
87
87
|
)
|
88
88
|
end
|
@@ -197,8 +197,8 @@ describe Mongoid::Atomic do
|
|
197
197
|
"addresses.0.street" => "Bond St"
|
198
198
|
},
|
199
199
|
conflicts: {
|
200
|
-
"$
|
201
|
-
"addresses.0.locations" => [{ "_id" => location.id, "name" => "Home" }]
|
200
|
+
"$push" => {
|
201
|
+
"addresses.0.locations" => { '$each' => [{ "_id" => location.id, "name" => "Home" }] }
|
202
202
|
}
|
203
203
|
}
|
204
204
|
}
|
@@ -215,8 +215,8 @@ describe Mongoid::Atomic do
|
|
215
215
|
"addresses.0.street" => "Bond St"
|
216
216
|
},
|
217
217
|
conflicts: {
|
218
|
-
"$
|
219
|
-
"addresses.0.locations" => [{ "_id" => location.id, "name" => "Home" }]
|
218
|
+
"$push" => {
|
219
|
+
"addresses.0.locations" => { '$each' => [{ "_id" => location.id, "name" => "Home" }] }
|
220
220
|
}
|
221
221
|
}
|
222
222
|
}
|
@@ -263,15 +263,15 @@ describe Mongoid::Atomic do
|
|
263
263
|
"addresses.0.street" => "Bond St"
|
264
264
|
},
|
265
265
|
conflicts: {
|
266
|
-
"$
|
267
|
-
"addresses" => [{
|
266
|
+
"$push" => {
|
267
|
+
"addresses" => { '$each' => [{
|
268
268
|
"_id" => new_address.id,
|
269
269
|
"street" => "Another",
|
270
270
|
"locations" => [
|
271
271
|
"_id" => location.id,
|
272
272
|
"name" => "Home"
|
273
273
|
]
|
274
|
-
}]
|
274
|
+
}] }
|
275
275
|
}
|
276
276
|
}
|
277
277
|
}
|
@@ -310,15 +310,15 @@ describe Mongoid::Atomic do
|
|
310
310
|
"$set" => {
|
311
311
|
"title" => "Sir"
|
312
312
|
},
|
313
|
-
"$
|
314
|
-
"addresses" => [{
|
313
|
+
"$push" => {
|
314
|
+
"addresses" => { '$each' => [{
|
315
315
|
"_id" => new_address.id,
|
316
316
|
"street" => "Ipanema",
|
317
317
|
"locations" => [
|
318
318
|
"_id" => location.id,
|
319
319
|
"name" => "Home"
|
320
320
|
]
|
321
|
-
}]
|
321
|
+
}] }
|
322
322
|
},
|
323
323
|
conflicts: {
|
324
324
|
"$set" => { "addresses.0.street"=>"Bond St" }
|
@@ -339,21 +339,21 @@ describe Mongoid::Atomic do
|
|
339
339
|
address.locations.build(name: "Home")
|
340
340
|
end
|
341
341
|
|
342
|
-
it "returns the proper $sets and $
|
342
|
+
it "returns the proper $sets and $pushs and $eaches for all levels" do
|
343
343
|
expect(person.atomic_updates).to eq(
|
344
344
|
{
|
345
345
|
"$set" => {
|
346
346
|
"title" => "Sir",
|
347
347
|
},
|
348
|
-
"$
|
349
|
-
"addresses" => [{
|
348
|
+
"$push" => {
|
349
|
+
"addresses" => { "$each" => [{
|
350
350
|
"_id" => address.id,
|
351
351
|
"street" => "Another",
|
352
352
|
"locations" => [
|
353
353
|
"_id" => location.id,
|
354
354
|
"name" => "Home"
|
355
355
|
]
|
356
|
-
}]
|
356
|
+
}] }
|
357
357
|
}
|
358
358
|
}
|
359
359
|
)
|