mongoid 5.2.1 → 5.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
)
|