mongo_doc 0.6.25 → 0.6.26
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/README.textile +1 -1
- data/VERSION +1 -1
- data/lib/mongo_doc/document.rb +11 -3
- data/lib/mongo_doc.rb +1 -1
- data/mongo_doc.gemspec +2 -2
- data/spec/update_spec.rb +21 -16
- metadata +3 -3
data/README.textile
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.6.
|
|
1
|
+
0.6.26
|
data/lib/mongo_doc/document.rb
CHANGED
|
@@ -114,14 +114,14 @@ module MongoDoc
|
|
|
114
114
|
self.attributes = attrs
|
|
115
115
|
return save if new_record?
|
|
116
116
|
return false unless valid?
|
|
117
|
-
_update_attributes(attrs, false)
|
|
117
|
+
_update_attributes(converted_attributes(attrs), false)
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def update_attributes!(attrs)
|
|
121
121
|
self.attributes = attrs
|
|
122
122
|
return save! if new_record?
|
|
123
123
|
raise DocumentInvalidError unless valid?
|
|
124
|
-
_update_attributes(attrs, true)
|
|
124
|
+
_update_attributes(converted_attributes(attrs), true)
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
# Update without checking validations. The +Document+ will be saved without validations if it is a new record.
|
|
@@ -131,7 +131,7 @@ module MongoDoc
|
|
|
131
131
|
_root.send(:_save, safe) if _root
|
|
132
132
|
_save(safe)
|
|
133
133
|
else
|
|
134
|
-
_update_attributes(attrs, safe)
|
|
134
|
+
_update_attributes(converted_attributes(attrs), safe)
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
@@ -186,6 +186,14 @@ module MongoDoc
|
|
|
186
186
|
raise e
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
+
def converted_attributes(attrs)
|
|
190
|
+
converted = {}
|
|
191
|
+
attrs.keys.each do |attr|
|
|
192
|
+
converted[attr] = send(attr)
|
|
193
|
+
end
|
|
194
|
+
converted
|
|
195
|
+
end
|
|
196
|
+
|
|
189
197
|
def hash_with_modifier_path_keys(hash)
|
|
190
198
|
hash.stringify_keys!
|
|
191
199
|
{}.tap do |dup|
|
data/lib/mongo_doc.rb
CHANGED
data/mongo_doc.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{mongo_doc}
|
|
8
|
-
s.version = "0.6.
|
|
8
|
+
s.version = "0.6.26"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Les Hill"]
|
|
12
|
-
s.date = %q{2010-
|
|
12
|
+
s.date = %q{2010-12-06}
|
|
13
13
|
s.description = %q{ODM for MongoDB}
|
|
14
14
|
s.email = %q{leshill@gmail.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/update_spec.rb
CHANGED
|
@@ -6,12 +6,14 @@ describe "MongoDoc::Document" do
|
|
|
6
6
|
include MongoDoc::Document
|
|
7
7
|
|
|
8
8
|
attr_accessor :child_data
|
|
9
|
+
attr_accessor :child_int, :type => Integer
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
class UpdateAttributes
|
|
12
13
|
include MongoDoc::Document
|
|
13
14
|
|
|
14
15
|
attr_accessor :data
|
|
16
|
+
attr_accessor :int, :type => Integer
|
|
15
17
|
embed :child
|
|
16
18
|
end
|
|
17
19
|
|
|
@@ -40,33 +42,34 @@ describe "MongoDoc::Document" do
|
|
|
40
42
|
context "with a new doc" do
|
|
41
43
|
it "delegates to save! if the doc is a new record" do
|
|
42
44
|
new_doc.should_receive(:_save)
|
|
43
|
-
new_doc.update(:data => 'data')
|
|
45
|
+
new_doc.update(:data => 'data', :int => '1')
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
it "delegates to the root's save if the child is a new record" do
|
|
47
49
|
existing_doc.should_receive(:_save)
|
|
48
|
-
new_child.update(:child_data => 'data')
|
|
50
|
+
new_child.update(:child_data => 'data', :child_int => '1')
|
|
49
51
|
end
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
context "with an existing doc" do
|
|
53
55
|
|
|
54
|
-
subject { existing_doc.update(:data => 'data') }
|
|
56
|
+
subject { existing_doc.update(:data => 'data', :int => '1') }
|
|
55
57
|
|
|
56
58
|
it "sets the attributes" do
|
|
57
59
|
subject
|
|
58
60
|
existing_doc.data.should == 'data'
|
|
61
|
+
existing_doc.int.should == 1
|
|
59
62
|
end
|
|
60
63
|
|
|
61
64
|
it "delegates to collection update" do
|
|
62
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data'}}, :safe => false)
|
|
65
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => false)
|
|
63
66
|
subject
|
|
64
67
|
end
|
|
65
68
|
|
|
66
69
|
context "that is embedded" do
|
|
67
70
|
it "delegates to the root's collection update" do
|
|
68
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data'}}, :safe => true)
|
|
69
|
-
child.update_attributes!(:child_data => 'data')
|
|
71
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => true)
|
|
72
|
+
child.update_attributes!(:child_data => 'data', :child_int => '1')
|
|
70
73
|
end
|
|
71
74
|
end
|
|
72
75
|
end
|
|
@@ -75,16 +78,17 @@ describe "MongoDoc::Document" do
|
|
|
75
78
|
describe "#update_attributes" do
|
|
76
79
|
it "delegates to save if the doc is a new record" do
|
|
77
80
|
new_doc.should_receive(:save)
|
|
78
|
-
new_doc.update_attributes(:data => 'data')
|
|
81
|
+
new_doc.update_attributes(:data => 'data', :int => '1')
|
|
79
82
|
end
|
|
80
83
|
|
|
81
84
|
context "with an existing doc" do
|
|
82
85
|
|
|
83
|
-
subject { existing_doc.update_attributes(:data => 'data') }
|
|
86
|
+
subject { existing_doc.update_attributes(:data => 'data', :int => '1') }
|
|
84
87
|
|
|
85
88
|
it "sets the attributes" do
|
|
86
89
|
subject
|
|
87
90
|
existing_doc.data.should == 'data'
|
|
91
|
+
existing_doc.int.should == 1
|
|
88
92
|
end
|
|
89
93
|
|
|
90
94
|
it "validates the doc" do
|
|
@@ -98,14 +102,14 @@ describe "MongoDoc::Document" do
|
|
|
98
102
|
end
|
|
99
103
|
|
|
100
104
|
it "delegates to collection update" do
|
|
101
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data'}}, :safe => false)
|
|
105
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => false)
|
|
102
106
|
subject
|
|
103
107
|
end
|
|
104
108
|
|
|
105
109
|
context "that is embedded" do
|
|
106
110
|
it "delegates to the root's collection update" do
|
|
107
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data'}}, :safe => false)
|
|
108
|
-
child.update_attributes(:child_data => 'data')
|
|
111
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => false)
|
|
112
|
+
child.update_attributes(:child_data => 'data', :child_int => '1')
|
|
109
113
|
end
|
|
110
114
|
end
|
|
111
115
|
end
|
|
@@ -114,16 +118,17 @@ describe "MongoDoc::Document" do
|
|
|
114
118
|
describe "#update_attributes!" do
|
|
115
119
|
it "delegates to save! if the doc is a new record" do
|
|
116
120
|
new_doc.should_receive(:save!)
|
|
117
|
-
new_doc.update_attributes!(:data => 'data')
|
|
121
|
+
new_doc.update_attributes!(:data => 'data', :int => '1')
|
|
118
122
|
end
|
|
119
123
|
|
|
120
124
|
context "with an existing doc" do
|
|
121
125
|
|
|
122
|
-
subject { existing_doc.update_attributes!(:data => 'data') }
|
|
126
|
+
subject { existing_doc.update_attributes!(:data => 'data', :int => '1') }
|
|
123
127
|
|
|
124
128
|
it "sets the attributes" do
|
|
125
129
|
subject
|
|
126
130
|
existing_doc.data.should == 'data'
|
|
131
|
+
existing_doc.int.should == 1
|
|
127
132
|
end
|
|
128
133
|
|
|
129
134
|
it "validates the doc" do
|
|
@@ -139,14 +144,14 @@ describe "MongoDoc::Document" do
|
|
|
139
144
|
end
|
|
140
145
|
|
|
141
146
|
it "delegates to collection update" do
|
|
142
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data'}}, :safe => true)
|
|
147
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => true)
|
|
143
148
|
subject
|
|
144
149
|
end
|
|
145
150
|
|
|
146
151
|
context "that is embedded" do
|
|
147
152
|
it "delegates to the root's collection update" do
|
|
148
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data'}}, :safe => true)
|
|
149
|
-
child.update_attributes!(:child_data => 'data')
|
|
153
|
+
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => true)
|
|
154
|
+
child.update_attributes!(:child_data => 'data', :child_int => '1')
|
|
150
155
|
end
|
|
151
156
|
end
|
|
152
157
|
end
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 6
|
|
8
|
-
-
|
|
9
|
-
version: 0.6.
|
|
8
|
+
- 26
|
|
9
|
+
version: 0.6.26
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Les Hill
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2010-
|
|
17
|
+
date: 2010-12-06 00:00:00 -05:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|