mongoid 2.3.2 → 2.3.3
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.
- data/CHANGELOG.md +33 -3
- data/lib/mongoid.rb +1 -0
- data/lib/mongoid/criteria.rb +10 -5
- data/lib/mongoid/extensions/object/checks.rb +1 -4
- data/lib/mongoid/extensions/string/inflections.rb +2 -2
- data/lib/mongoid/javascript/functions.yml +7 -5
- data/lib/mongoid/named_scope.rb +7 -1
- data/lib/mongoid/railtie.rb +2 -3
- data/lib/mongoid/relations/metadata.rb +13 -0
- data/lib/mongoid/relations/referenced/many.rb +1 -1
- data/lib/mongoid/relations/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/synchronization.rb +4 -2
- data/lib/mongoid/reloading.rb +2 -2
- data/lib/mongoid/validations.rb +2 -0
- data/lib/mongoid/version.rb +1 -1
- metadata +21 -21
data/CHANGELOG.md
CHANGED
@@ -8,7 +8,39 @@ For instructions on upgrading to newer versions, visit
|
|
8
8
|
* Ranges can now be passed to #where criteria to create a $gte/$lte query under the
|
9
9
|
covers. `Person.where(dob: start_date...end_date)`
|
10
10
|
|
11
|
-
## 2.3.
|
11
|
+
## 2.3.3 \[ In Development \] \[ Branch: 2.3.0-stable \]
|
12
|
+
|
13
|
+
### Resolved Issues
|
14
|
+
|
15
|
+
* \#1386 Lowered mongo/bson dependency to 1.3
|
16
|
+
|
17
|
+
* \#1377 Fix aggregation functions to properly handle nil or indefined values.
|
18
|
+
(Maxime Garcia)
|
19
|
+
|
20
|
+
* \#1373 Warn if a scope overrides another scope.
|
21
|
+
|
22
|
+
* \#1372 Never persist when binding inside of a read attribute for validation.
|
23
|
+
|
24
|
+
* \#1364 Fixed reloading of documents with non bson object id ids.
|
25
|
+
|
26
|
+
* \#1360 Fixed performance of Mongoid's observer instantiation by hooking into
|
27
|
+
Active Support's load hooks, a la AR.
|
28
|
+
|
29
|
+
* \#1358 Fixed type error on many to many synchronization when inverse_of is
|
30
|
+
set to nil.
|
31
|
+
|
32
|
+
* \#1356 $in criteria can now be chained to non-complex criteria on the same
|
33
|
+
key without error.
|
34
|
+
|
35
|
+
* \#1350, \#1351 Fixed errors in the string conversions of double quotes and
|
36
|
+
tilde when paramterizing keys.
|
37
|
+
|
38
|
+
* \#1349 Mongoid documents should not blow up when including Enumerable.
|
39
|
+
(Jonas Nicklas)
|
40
|
+
|
41
|
+
## 2.3.2
|
42
|
+
|
43
|
+
### Resolved Issues
|
12
44
|
|
13
45
|
* \#1347 Fix embedded matchers when provided a hash value that does not have a
|
14
46
|
modifier as a key.
|
@@ -39,8 +71,6 @@ For instructions on upgrading to newer versions, visit
|
|
39
71
|
|
40
72
|
* \#736 Calling #reload on embedded documents now works properly.
|
41
73
|
|
42
|
-
### Resolved Issues
|
43
|
-
|
44
74
|
## 2.3.1
|
45
75
|
|
46
76
|
### Resolved Issues
|
data/lib/mongoid.rb
CHANGED
data/lib/mongoid/criteria.rb
CHANGED
@@ -396,14 +396,19 @@ module Mongoid #:nodoc:
|
|
396
396
|
clone.tap do |crit|
|
397
397
|
converted = BSON::ObjectId.convert(klass, attributes || {})
|
398
398
|
converted.each_pair do |key, value|
|
399
|
-
|
399
|
+
existing = crit.selector[key]
|
400
|
+
unless existing
|
400
401
|
crit.selector[key] = { operator => value }
|
401
402
|
else
|
402
|
-
if
|
403
|
-
|
404
|
-
|
403
|
+
if existing.respond_to?(:merge)
|
404
|
+
if existing.has_key?(operator)
|
405
|
+
new_value = existing.values.first.send(combine, value)
|
406
|
+
crit.selector[key] = { operator => new_value }
|
407
|
+
else
|
408
|
+
crit.selector[key][operator] = value
|
409
|
+
end
|
405
410
|
else
|
406
|
-
crit.selector[key]
|
411
|
+
crit.selector[key] = { operator => value }
|
407
412
|
end
|
408
413
|
end
|
409
414
|
end
|
@@ -14,9 +14,6 @@ module Mongoid #:nodoc:
|
|
14
14
|
# @example Is the array vacant?
|
15
15
|
# [].vacant?
|
16
16
|
#
|
17
|
-
# @example Is the hash vacant?
|
18
|
-
# {}.vacant?
|
19
|
-
#
|
20
17
|
# @example Is the object vacant?
|
21
18
|
# nil.vacant?
|
22
19
|
#
|
@@ -24,7 +21,7 @@ module Mongoid #:nodoc:
|
|
24
21
|
#
|
25
22
|
# @since 2.0.2
|
26
23
|
def _vacant?
|
27
|
-
is_a?(::
|
24
|
+
is_a?(::Array) || is_a?(::String) ? empty? : !self
|
28
25
|
end
|
29
26
|
end
|
30
27
|
end
|
@@ -18,7 +18,7 @@ module Mongoid #:nodoc:
|
|
18
18
|
CHAR_CONV = {
|
19
19
|
" " => "-",
|
20
20
|
"!" => "-excl-",
|
21
|
-
"\"" => "-
|
21
|
+
"\"" => "-dblquo-",
|
22
22
|
"#" => "-hash-",
|
23
23
|
"$" => "-dol-",
|
24
24
|
"%" => "-perc-",
|
@@ -48,7 +48,7 @@ module Mongoid #:nodoc:
|
|
48
48
|
"{" => "-ocurly-",
|
49
49
|
"|" => "-pipe-",
|
50
50
|
"}" => "-clcurly-",
|
51
|
-
"~" => "-
|
51
|
+
"~" => "-tilde-"
|
52
52
|
}
|
53
53
|
|
54
54
|
REVERSALS = {
|
@@ -10,20 +10,20 @@ group:
|
|
10
10
|
|
11
11
|
max:
|
12
12
|
"function(obj, prev) {
|
13
|
-
if (prev.max == 'start') {
|
13
|
+
if (obj.[field] && prev.max == 'start') {
|
14
14
|
prev.max = obj.[field];
|
15
15
|
}
|
16
|
-
if (prev.max < obj.[field]) {
|
16
|
+
if (obj.[field] && prev.max < obj.[field]) {
|
17
17
|
prev.max = obj.[field];
|
18
18
|
}
|
19
19
|
}"
|
20
20
|
|
21
21
|
min:
|
22
22
|
"function(obj, prev) {
|
23
|
-
if (prev.min == 'start') {
|
23
|
+
if (obj.[field] && prev.min == 'start') {
|
24
24
|
prev.min = obj.[field];
|
25
25
|
}
|
26
|
-
if (prev.min > obj.[field]) {
|
26
|
+
if (obj.[field] && prev.min > obj.[field]) {
|
27
27
|
prev.min = obj.[field];
|
28
28
|
}
|
29
29
|
}"
|
@@ -33,5 +33,7 @@ sum:
|
|
33
33
|
if (prev.sum == 'start') {
|
34
34
|
prev.sum = 0;
|
35
35
|
}
|
36
|
-
|
36
|
+
if (obj.[field]) {
|
37
|
+
prev.sum += obj.[field];
|
38
|
+
}
|
37
39
|
}"
|
data/lib/mongoid/named_scope.rb
CHANGED
@@ -125,8 +125,14 @@ module Mongoid #:nodoc:
|
|
125
125
|
|
126
126
|
protected
|
127
127
|
|
128
|
+
# Warns if overriding another scope or method.
|
129
|
+
#
|
130
|
+
# @example Warn if name exists.
|
131
|
+
# Model.valid_scope_name?("test")
|
132
|
+
#
|
133
|
+
# @param [ String, Symbol ] name The name of the scope.
|
128
134
|
def valid_scope_name?(name)
|
129
|
-
if
|
135
|
+
if scopes[name] || respond_to?(name, true)
|
130
136
|
if Mongoid.logger
|
131
137
|
Mongoid.logger.warn(
|
132
138
|
"Creating scope :#{name}. " +
|
data/lib/mongoid/railtie.rb
CHANGED
@@ -115,9 +115,8 @@ module Rails #:nodoc:
|
|
115
115
|
# instantiate them after being reloaded in the development environment
|
116
116
|
initializer "instantiate observers" do
|
117
117
|
config.after_initialize do
|
118
|
-
::Mongoid
|
119
|
-
|
120
|
-
ActionDispatch::Callbacks.to_prepare do
|
118
|
+
::Mongoid::instantiate_observers
|
119
|
+
ActionDispatch::Reloader.to_prepare do
|
121
120
|
::Mongoid.instantiate_observers
|
122
121
|
end
|
123
122
|
end
|
@@ -243,6 +243,19 @@ module Mongoid # :nodoc:
|
|
243
243
|
!!extension
|
244
244
|
end
|
245
245
|
|
246
|
+
# Does this metadata have a forced nil inverse_of defined. (Used in many
|
247
|
+
# to manies)
|
248
|
+
#
|
249
|
+
# @example Is this a forced nil inverse?
|
250
|
+
# metadata.forced_nil_inverse?
|
251
|
+
#
|
252
|
+
# @return [ true, false ] If inverse_of has been explicitly set to nil.
|
253
|
+
#
|
254
|
+
# @since 2.3.3
|
255
|
+
def forced_nil_inverse?
|
256
|
+
has_key?(:inverse_of) && inverse_of.nil?
|
257
|
+
end
|
258
|
+
|
246
259
|
# Handles all the logic for figuring out what the foreign_key is for each
|
247
260
|
# relations query. The logic is as follows:
|
248
261
|
#
|
@@ -153,7 +153,9 @@ module Mongoid # :nodoc:
|
|
153
153
|
#
|
154
154
|
# @since 2.0.0.rc.1
|
155
155
|
def nullify
|
156
|
-
|
156
|
+
unless metadata.forced_nil_inverse?
|
157
|
+
criteria.pull(metadata.inverse_foreign_key, base.id)
|
158
|
+
end
|
157
159
|
if persistable?
|
158
160
|
base.set(
|
159
161
|
metadata.foreign_key,
|
data/lib/mongoid/reloading.rb
CHANGED
@@ -54,7 +54,7 @@ module Mongoid #:nodoc:
|
|
54
54
|
#
|
55
55
|
# @since 2.3.2
|
56
56
|
def reload_root_document
|
57
|
-
{}.merge(collection.find_one(id) || {})
|
57
|
+
{}.merge(collection.find_one(:_id => id) || {})
|
58
58
|
end
|
59
59
|
|
60
60
|
# Reload the embedded document.
|
@@ -67,7 +67,7 @@ module Mongoid #:nodoc:
|
|
67
67
|
# @since 2.3.2
|
68
68
|
def reload_embedded_document
|
69
69
|
extract_embedded_attributes({}.merge(
|
70
|
-
_root.collection.find_one(_root.id)
|
70
|
+
_root.collection.find_one(:_id => _root.id)
|
71
71
|
))
|
72
72
|
end
|
73
73
|
|
data/lib/mongoid/validations.rb
CHANGED
data/lib/mongoid/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-31 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
16
|
-
requirement: &
|
16
|
+
requirement: &70239778174840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70239778174840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tzinfo
|
27
|
-
requirement: &
|
27
|
+
requirement: &70239778174200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 0.3.22
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70239778174200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mongo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70239778173520 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '1.
|
43
|
+
version: '1.3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70239778173520
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &70239778172400 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,21 +54,21 @@ dependencies:
|
|
54
54
|
version: 3.5.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70239778172400
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bson_ext
|
60
|
-
requirement: &
|
60
|
+
requirement: &70239778171440 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: '1.
|
65
|
+
version: '1.3'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70239778171440
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
|
-
requirement: &
|
71
|
+
requirement: &70239778170600 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.9.12
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70239778170600
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70239778169700 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '2.6'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70239778169700
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: watchr
|
93
|
-
requirement: &
|
93
|
+
requirement: &70239778168680 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0.6'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70239778168680
|
102
102
|
description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written
|
103
103
|
in Ruby.
|
104
104
|
email:
|
@@ -393,7 +393,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
393
393
|
version: '0'
|
394
394
|
segments:
|
395
395
|
- 0
|
396
|
-
hash:
|
396
|
+
hash: 1966370546899582904
|
397
397
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
398
398
|
none: false
|
399
399
|
requirements:
|