mongoid 8.1.3 → 8.1.4
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +18 -3
- data/lib/mongoid/association/referenced/has_many/proxy.rb +11 -2
- data/lib/mongoid/interceptable.rb +0 -2
- data/lib/mongoid/version.rb +1 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +35 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +42 -0
- data.tar.gz.sig +0 -0
- metadata +5 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '059cd4652349083d2098577aa1c6f1f90233ab91474ef0a3f97db4bef4843f9f'
|
4
|
+
data.tar.gz: ca14035b9902221fe082862ea061f83beb2abc41a9a3eeb10dd0f781a34e697e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 358e801040678c844022e9e41bcdd3a5d482cbafbe608b623340c834d4b72545df547afa83d861d64431703d198c4347f6d9bada41c2960d38b46fdc1a243855
|
7
|
+
data.tar.gz: 8a2981f0a6d4bb4b2c24b6a636079ad3e3cbd1586791104deca7c118d0a08f8753a9a2ce564b416293ce337154c965f26a9ce34f44f087dd0fa8c981d58684da
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -227,9 +227,24 @@ module Mongoid
|
|
227
227
|
# @example Are there persisted documents?
|
228
228
|
# person.posts.exists?
|
229
229
|
#
|
230
|
-
# @
|
231
|
-
|
232
|
-
|
230
|
+
# @param [ :none | nil | false | Hash | Object ] id_or_conditions
|
231
|
+
# When :none (the default), returns true if any persisted
|
232
|
+
# documents exist in the association. When nil or false, this
|
233
|
+
# will always return false. When a Hash is given, this queries
|
234
|
+
# the documents in the association for those that match the given
|
235
|
+
# conditions, and returns true if any match which have been
|
236
|
+
# persisted. Any other argument is interpreted as an id, and
|
237
|
+
# queries for the existence of persisted documents in the
|
238
|
+
# association with a matching _id.
|
239
|
+
#
|
240
|
+
# @return [ true | false ] True if persisted documents exist, false if not.
|
241
|
+
def exists?(id_or_conditions = :none)
|
242
|
+
case id_or_conditions
|
243
|
+
when :none then _target.any?(&:persisted?)
|
244
|
+
when nil, false then false
|
245
|
+
when Hash then where(id_or_conditions).any?(&:persisted?)
|
246
|
+
else where(_id: id_or_conditions).any?(&:persisted?)
|
247
|
+
end
|
233
248
|
end
|
234
249
|
|
235
250
|
# Finds a document in this association through several different
|
@@ -172,9 +172,18 @@ module Mongoid
|
|
172
172
|
# @example Are there persisted documents?
|
173
173
|
# person.posts.exists?
|
174
174
|
#
|
175
|
+
# @param [ :none | nil | false | Hash | Object ] id_or_conditions
|
176
|
+
# When :none (the default), returns true if any persisted
|
177
|
+
# documents exist in the association. When nil or false, this
|
178
|
+
# will always return false. When a Hash is given, this queries
|
179
|
+
# the documents in the association for those that match the given
|
180
|
+
# conditions, and returns true if any match. Any other argument is
|
181
|
+
# interpreted as an id, and queries for the existence of documents
|
182
|
+
# in the association with a matching _id.
|
183
|
+
#
|
175
184
|
# @return [ true | false ] True is persisted documents exist, false if not.
|
176
|
-
def exists?
|
177
|
-
criteria.exists?
|
185
|
+
def exists?(id_or_conditions = :none)
|
186
|
+
criteria.exists?(id_or_conditions)
|
178
187
|
end
|
179
188
|
|
180
189
|
# Find the matching document on the association, either based on id or
|
data/lib/mongoid/version.rb
CHANGED
@@ -2310,9 +2310,37 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
2310
2310
|
person.addresses.create!(street: "Bond St")
|
2311
2311
|
end
|
2312
2312
|
|
2313
|
+
let(:address) { person.addresses.first }
|
2314
|
+
|
2313
2315
|
it "returns true" do
|
2314
2316
|
expect(person.addresses.exists?).to be true
|
2315
2317
|
end
|
2318
|
+
|
2319
|
+
context 'when given specifying conditions' do
|
2320
|
+
context 'when the record exists in the association' do
|
2321
|
+
it 'returns true by condition' do
|
2322
|
+
expect(person.addresses.exists?(street: 'Bond St')).to be true
|
2323
|
+
end
|
2324
|
+
|
2325
|
+
it 'returns true by id' do
|
2326
|
+
expect(person.addresses.exists?(address._id)).to be true
|
2327
|
+
end
|
2328
|
+
|
2329
|
+
it 'returns false when given false' do
|
2330
|
+
expect(person.addresses.exists?(false)).to be false
|
2331
|
+
end
|
2332
|
+
|
2333
|
+
it 'returns false when given nil' do
|
2334
|
+
expect(person.addresses.exists?(nil)).to be false
|
2335
|
+
end
|
2336
|
+
end
|
2337
|
+
|
2338
|
+
context 'when the record does not exist in the association' do
|
2339
|
+
it 'returns false' do
|
2340
|
+
expect(person.addresses.exists?(street: 'Garfield Ave')).to be false
|
2341
|
+
end
|
2342
|
+
end
|
2343
|
+
end
|
2316
2344
|
end
|
2317
2345
|
|
2318
2346
|
context "when no documents exist in the database" do
|
@@ -2324,6 +2352,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
2324
2352
|
it "returns false" do
|
2325
2353
|
expect(person.addresses.exists?).to be false
|
2326
2354
|
end
|
2355
|
+
|
2356
|
+
context 'when given specifying conditions' do
|
2357
|
+
it 'returns false' do
|
2358
|
+
expect(person.addresses.exists?(street: 'Hyde Park Dr')).to be false
|
2359
|
+
expect(person.addresses.exists?(street: 'Garfield Ave')).to be false
|
2360
|
+
end
|
2361
|
+
end
|
2327
2362
|
end
|
2328
2363
|
end
|
2329
2364
|
|
@@ -2395,6 +2395,42 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
|
|
2395
2395
|
end
|
2396
2396
|
end
|
2397
2397
|
end
|
2398
|
+
|
2399
|
+
context 'when invoked with specifying conditions' do
|
2400
|
+
let(:other_person) { Person.create! }
|
2401
|
+
let(:post) { person.posts.first }
|
2402
|
+
|
2403
|
+
before do
|
2404
|
+
person.posts.create title: 'bumfuzzle'
|
2405
|
+
other_person.posts.create title: 'bumbershoot'
|
2406
|
+
end
|
2407
|
+
|
2408
|
+
context 'when the conditions match an associated record' do
|
2409
|
+
it 'detects its existence by condition' do
|
2410
|
+
expect(person.posts.exists?(title: 'bumfuzzle')).to be true
|
2411
|
+
expect(other_person.posts.exists?(title: 'bumbershoot')).to be true
|
2412
|
+
end
|
2413
|
+
|
2414
|
+
it 'detects its existence by id' do
|
2415
|
+
expect(person.posts.exists?(post._id)).to be true
|
2416
|
+
end
|
2417
|
+
|
2418
|
+
it 'returns false when given false' do
|
2419
|
+
expect(person.posts.exists?(false)).to be false
|
2420
|
+
end
|
2421
|
+
|
2422
|
+
it 'returns false when given nil' do
|
2423
|
+
expect(person.posts.exists?(nil)).to be false
|
2424
|
+
end
|
2425
|
+
end
|
2426
|
+
|
2427
|
+
context 'when the conditions match an unassociated record' do
|
2428
|
+
it 'does not detect its existence' do
|
2429
|
+
expect(person.posts.exists?(title: 'bumbershoot')).to be false
|
2430
|
+
expect(other_person.posts.exists?(title: 'bumfuzzle')).to be false
|
2431
|
+
end
|
2432
|
+
end
|
2433
|
+
end
|
2398
2434
|
end
|
2399
2435
|
|
2400
2436
|
context "when documents exist in application but not in database" do
|
@@ -2465,6 +2501,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
|
|
2465
2501
|
end
|
2466
2502
|
end
|
2467
2503
|
end
|
2504
|
+
|
2505
|
+
context 'when invoked with specifying conditions' do
|
2506
|
+
it 'returns false' do
|
2507
|
+
expect(person.posts.exists?(title: 'hullaballoo')).to be false
|
2508
|
+
end
|
2509
|
+
end
|
2468
2510
|
end
|
2469
2511
|
end
|
2470
2512
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.1.
|
4
|
+
version: 8.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The MongoDB Ruby Team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
wkeAWhd5b+5JS0zgDL4SvGB8/W2IY+y0zELkojBMgJPyrpAWHL/WSsSBMuhyI2Pv
|
36
36
|
xxaBVLklnJJ/qCCOZ3lG2MyVc/Nb0Mmq8ygWNsfwHmKKYuuWcviit0D0Tek=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2023-
|
38
|
+
date: 2023-11-22 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: activemodel
|
@@ -1196,7 +1196,7 @@ metadata:
|
|
1196
1196
|
documentation_uri: https://www.mongodb.com/docs/mongoid/
|
1197
1197
|
homepage_uri: https://mongoid.org/
|
1198
1198
|
source_code_uri: https://github.com/mongodb/mongoid
|
1199
|
-
post_install_message:
|
1199
|
+
post_install_message:
|
1200
1200
|
rdoc_options: []
|
1201
1201
|
require_paths:
|
1202
1202
|
- lib
|
@@ -1212,7 +1212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1212
1212
|
version: 1.3.6
|
1213
1213
|
requirements: []
|
1214
1214
|
rubygems_version: 3.4.21
|
1215
|
-
signing_key:
|
1215
|
+
signing_key:
|
1216
1216
|
specification_version: 4
|
1217
1217
|
summary: Elegant Persistence in Ruby for MongoDB.
|
1218
1218
|
test_files:
|
metadata.gz.sig
CHANGED
Binary file
|