mongoid 0.9.10 → 0.9.11
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 +3 -166
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/mongoid.rb +5 -5
- data/lib/mongoid/attributes.rb +16 -1
- data/lib/mongoid/commands.rb +0 -1
- data/lib/mongoid/commands/save.rb +1 -1
- data/lib/mongoid/document.rb +18 -4
- data/mongoid.gemspec +8 -11
- data/spec/spec_helper.rb +5 -1
- data/spec/unit/mongoid/attributes_spec.rb +15 -0
- data/spec/unit/mongoid/commands_spec.rb +19 -0
- metadata +12 -15
- data/lib/mongoid/commands/validate.rb +0 -21
- data/spec/unit/mongoid/commands/validate_spec.rb +0 -25
data/README.textile
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
<a href="http://www.pivotaltracker.com/projects/27482">Mongoid on Pivotal Tracker</a>
|
12
12
|
<a href="http://groups.google.com/group/mongoid">Mongoid Google Group</a>
|
13
13
|
<a href="http://mongoid.org:4444/">Mongoid on CI Joe</a>
|
14
|
+
<a href="http://mongoid.org">Mongoid Website and Documentation</a>
|
14
15
|
|
15
16
|
<h3>Compatibility</h3>
|
16
17
|
|
@@ -26,173 +27,9 @@
|
|
26
27
|
release notes and documentation with each release.
|
27
28
|
</p>
|
28
29
|
|
29
|
-
<h2>
|
30
|
+
<h2>Documentation</h2>
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
<pre>
|
34
|
-
connection = Mongo::Connection.new
|
35
|
-
Mongoid.database = connection.db("my_db_name")
|
36
|
-
</pre>
|
37
|
-
|
38
|
-
Example of a simple domain model:
|
39
|
-
|
40
|
-
<pre>
|
41
|
-
class Person < Mongoid::Document
|
42
|
-
include Mongoid::Versioning
|
43
|
-
|
44
|
-
field :title
|
45
|
-
field :age, :type => Integer, :default => 0
|
46
|
-
|
47
|
-
has_one :name
|
48
|
-
has_many :addresses
|
49
|
-
|
50
|
-
has_one_related :game
|
51
|
-
has_many_related :posts
|
52
|
-
end
|
53
|
-
|
54
|
-
class Address < Mongoid::Document
|
55
|
-
field :street
|
56
|
-
field :city
|
57
|
-
field :state
|
58
|
-
field :post_code
|
59
|
-
belongs_to :person, :inverse_of => :addresses
|
60
|
-
end
|
61
|
-
|
62
|
-
class Name < Mongoid::Document
|
63
|
-
include Mongoid::Timestamps
|
64
|
-
field :first_name
|
65
|
-
field :last_name
|
66
|
-
belongs_to :person, :inverse_of => :name
|
67
|
-
end
|
68
|
-
|
69
|
-
class Post < Mongoid::Document
|
70
|
-
include Mongoid::Timestamps
|
71
|
-
field :title
|
72
|
-
field :text
|
73
|
-
field :tags, :type => Array
|
74
|
-
belongs_to_related :person
|
75
|
-
end
|
76
|
-
|
77
|
-
class Game < ActiveRecord::Base
|
78
|
-
belongs_to_related :person
|
79
|
-
end
|
80
|
-
</pre>
|
81
|
-
|
82
|
-
Mongoid supports all the basic ActiveRecord creation and persistence methods.
|
83
|
-
|
84
|
-
Creation:
|
85
|
-
|
86
|
-
<pre>
|
87
|
-
Person.create(:title => "Esquire")
|
88
|
-
Person.create!(:title => "Sir", :name => { :first_name => "Elton", :last_name => "John" })
|
89
|
-
</pre>
|
90
|
-
|
91
|
-
Save:
|
92
|
-
|
93
|
-
<pre>
|
94
|
-
person.save
|
95
|
-
person.save!
|
96
|
-
</pre>
|
97
|
-
|
98
|
-
Updating:
|
99
|
-
|
100
|
-
<pre>
|
101
|
-
person.update_attributes(:title => "Sir")
|
102
|
-
person.update_attributes!(:name => { :first_name => "Emmanuel", :last_name => "Zorg" })
|
103
|
-
</pre>
|
104
|
-
|
105
|
-
Deleting:
|
106
|
-
|
107
|
-
<pre>
|
108
|
-
person.destroy
|
109
|
-
Person.destroy_all(:title => "Sir")
|
110
|
-
person.delete
|
111
|
-
Person.delete_all(:title => "Sir")
|
112
|
-
</pre>
|
113
|
-
|
114
|
-
Count:
|
115
|
-
|
116
|
-
<pre>
|
117
|
-
Person.count
|
118
|
-
</pre>
|
119
|
-
|
120
|
-
Retrieval of Documents from the database can be done in the traditional ActiveRecord
|
121
|
-
manner or done using the Mongoid criteria DSL.
|
122
|
-
|
123
|
-
Old School:
|
124
|
-
|
125
|
-
<pre>
|
126
|
-
Person.find(:all, :conditions => { :title => "Esquire" })
|
127
|
-
Person.find(:first, :conditions => { :title => "Esquire" })
|
128
|
-
Person.first(:conditions => { :title => "Sir" })
|
129
|
-
Person.all(:conditions => { :title => "Sir" })
|
130
|
-
</pre>
|
131
|
-
|
132
|
-
New School:
|
133
|
-
|
134
|
-
<pre>
|
135
|
-
Person.select(:first_name, :last_name).where(:title => "Sir").skip(10).limit(10).paginate
|
136
|
-
Person.select(:title).aggregate
|
137
|
-
Person.select(:first_name).order_by([[:first_name, :asc]])
|
138
|
-
Criteria.translate(:conditions => { :title => "Sir" })
|
139
|
-
</pre>
|
140
|
-
|
141
|
-
Chaining Scopes:
|
142
|
-
|
143
|
-
Class methods that return criteria, either through the Criteria API or the traditional Finder API, can
|
144
|
-
be chained, similar to DataMapper.
|
145
|
-
|
146
|
-
<pre>
|
147
|
-
class Person < Mongoid::Document
|
148
|
-
field :title
|
149
|
-
field :age, :type => Integer
|
150
|
-
|
151
|
-
class << self
|
152
|
-
def knighted
|
153
|
-
criteria.where(:title => "Sir")
|
154
|
-
end
|
155
|
-
def old
|
156
|
-
criteria.where(:age => { "$gt" > 70 })
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
Person.old.knighted
|
162
|
-
Person.old.paginate
|
163
|
-
</pre>
|
164
|
-
|
165
|
-
Paginate Document search results:
|
166
|
-
|
167
|
-
<pre>
|
168
|
-
Person.paginate(:conditions => {:title => "Esquire"}, :page => 1, :per_page => 20)
|
169
|
-
</pre>
|
170
|
-
|
171
|
-
Versioning:
|
172
|
-
|
173
|
-
Versioning can be added by including Mongoid::Versioning in your document. This will give
|
174
|
-
a version field, and will update the version number with each save. Additionally each
|
175
|
-
version of the document will be stored in a versions array, embedded within the document.
|
176
|
-
|
177
|
-
<pre>
|
178
|
-
class Person < Mongoid::Document
|
179
|
-
include Mongoid::Versioning
|
180
|
-
field :title
|
181
|
-
end
|
182
|
-
|
183
|
-
@person = Person.new
|
184
|
-
@person.save # Version 1
|
185
|
-
@person.title = "Madam"
|
186
|
-
@person.save # Version 2
|
187
|
-
@person.versions.size = 1
|
188
|
-
</pre>
|
189
|
-
|
190
|
-
Validations:
|
191
|
-
|
192
|
-
Mongoid supports all validations provided by Jay Fields' <tt>Validatable</tt> gem.
|
193
|
-
For more information please see the <tt>Validatable</tt> documentation.
|
194
|
-
|
195
|
-
<a href="http://validatable.rubyforge.org/">Validatable on RubyForge</a>
|
32
|
+
<p>Please see the new Mongoid website for up-to-date documentation: <a href="http://mongoid.org">mongoid.org</a></p>
|
196
33
|
|
197
34
|
<h2>License</h2>
|
198
35
|
|
data/Rakefile
CHANGED
@@ -12,11 +12,11 @@ begin
|
|
12
12
|
gem.homepage = "http://github.com/durran/mongoid"
|
13
13
|
gem.authors = ["Durran Jordan"]
|
14
14
|
|
15
|
-
gem.add_dependency("durran-validatable", ">= 1.8.3")
|
16
|
-
gem.add_dependency("leshill-will_paginate", ">= 2.3.11")
|
17
15
|
gem.add_dependency("activesupport", ">= 2.3.4")
|
18
16
|
gem.add_dependency("mongo", ">= 0.18.1")
|
19
17
|
gem.add_dependency("mongo_ext", ">= 0.18.1")
|
18
|
+
gem.add_dependency("durran-validatable", ">= 1.8.3")
|
19
|
+
gem.add_dependency("leshill-will_paginate", ">= 2.3.11")
|
20
20
|
|
21
21
|
gem.add_development_dependency("rspec", ">= 1.2.9")
|
22
22
|
gem.add_development_dependency("mocha", ">= 0.9.8")
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.11
|
data/lib/mongoid.rb
CHANGED
@@ -21,11 +21,11 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
require "rubygems"
|
23
23
|
|
24
|
-
gem "activesupport", "2.3.4"
|
25
|
-
gem "mongo", "0.18.1"
|
26
|
-
gem "mongo_ext", "0.18.1"
|
27
|
-
gem "durran-validatable", "1.8.3"
|
28
|
-
gem "leshill-will_paginate", "2.3.11"
|
24
|
+
gem "activesupport", ">= 2.3.4"
|
25
|
+
gem "mongo", ">= 0.18.1"
|
26
|
+
gem "mongo_ext", ">= 0.18.1"
|
27
|
+
gem "durran-validatable", ">= 1.8.3"
|
28
|
+
gem "leshill-will_paginate", ">= 2.3.11"
|
29
29
|
|
30
30
|
require "delegate"
|
31
31
|
require "observer"
|
data/lib/mongoid/attributes.rb
CHANGED
@@ -86,6 +86,18 @@ module Mongoid #:nodoc:
|
|
86
86
|
process(attrs)
|
87
87
|
notify
|
88
88
|
end
|
89
|
+
|
90
|
+
protected
|
91
|
+
# Used when supplying a :reject_if block as an option to
|
92
|
+
# accepts_nested_attributes_for
|
93
|
+
def reject(attributes, options)
|
94
|
+
rejector = options[:reject_if]
|
95
|
+
if rejector
|
96
|
+
attributes.delete_if do |key, value|
|
97
|
+
rejector.call(value)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
89
101
|
end
|
90
102
|
|
91
103
|
module ClassMethods
|
@@ -101,8 +113,11 @@ module Mongoid #:nodoc:
|
|
101
113
|
# accepts_nested_attributes_for :name, :addresses
|
102
114
|
# end
|
103
115
|
def accepts_nested_attributes_for(*args)
|
104
|
-
args.flatten
|
116
|
+
associations = args.flatten
|
117
|
+
options = associations.last.is_a?(Hash) ? associations.pop : {}
|
118
|
+
associations.each do |name|
|
105
119
|
define_method("#{name}_attributes=") do |attrs|
|
120
|
+
reject(attrs, options)
|
106
121
|
association = send(name)
|
107
122
|
update(association, true)
|
108
123
|
association.nested_build(attrs)
|
data/lib/mongoid/commands.rb
CHANGED
@@ -11,7 +11,7 @@ module Mongoid #:nodoc:
|
|
11
11
|
#
|
12
12
|
# Returns: +Document+ if validation passes, +false+ if not.
|
13
13
|
def self.execute(doc)
|
14
|
-
return false unless
|
14
|
+
return false unless doc.valid?
|
15
15
|
doc.run_callbacks :before_save
|
16
16
|
parent = doc.parent
|
17
17
|
doc.new_record = false
|
data/lib/mongoid/document.rb
CHANGED
@@ -49,8 +49,8 @@ module Mongoid #:nodoc:
|
|
49
49
|
#
|
50
50
|
# <tt>field :score, :default => 0</tt>
|
51
51
|
def field(name, options = {})
|
52
|
-
|
53
|
-
|
52
|
+
set_field(name, options)
|
53
|
+
set_default(name, options)
|
54
54
|
end
|
55
55
|
|
56
56
|
# Returns all the fields for the Document as a +Hash+ with names as keys.
|
@@ -99,17 +99,22 @@ module Mongoid #:nodoc:
|
|
99
99
|
protected
|
100
100
|
|
101
101
|
# Define a field attribute for the +Document+.
|
102
|
-
def
|
102
|
+
def set_field(name, options = {})
|
103
103
|
meth = options.delete(:as) || name
|
104
104
|
@fields ||= {}.with_indifferent_access
|
105
105
|
@fields[name] = Field.new(name.to_s, options)
|
106
|
+
create_accessors(name, meth, options)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Create the field accessors.
|
110
|
+
def create_accessors(name, meth, options = {})
|
106
111
|
define_method(meth) { read_attribute(name) }
|
107
112
|
define_method("#{meth}=") { |value| write_attribute(name, value) }
|
108
113
|
define_method("#{meth}?") { read_attribute(name) == true } if options[:type] == Boolean
|
109
114
|
end
|
110
115
|
|
111
116
|
# Set up a default value for a field.
|
112
|
-
def
|
117
|
+
def set_default(name, options = {})
|
113
118
|
value = options[:default]
|
114
119
|
@defaults ||= {}.with_indifferent_access
|
115
120
|
@defaults[name] = value if value
|
@@ -269,6 +274,15 @@ module Mongoid #:nodoc:
|
|
269
274
|
notify
|
270
275
|
end
|
271
276
|
|
277
|
+
# Needs to run the appropriate callbacks the delegate up to the validatable
|
278
|
+
# gem.
|
279
|
+
def valid?
|
280
|
+
run_callbacks(:before_validation)
|
281
|
+
result = super
|
282
|
+
run_callbacks(:after_validation)
|
283
|
+
result
|
284
|
+
end
|
285
|
+
|
272
286
|
protected
|
273
287
|
def generate_key
|
274
288
|
if primary_key
|
data/mongoid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoid}
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Durran Jordan"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-20}
|
13
13
|
s.email = %q{durran@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.textile"
|
@@ -39,7 +39,6 @@ Gem::Specification.new do |s|
|
|
39
39
|
"lib/mongoid/commands/destroy.rb",
|
40
40
|
"lib/mongoid/commands/destroy_all.rb",
|
41
41
|
"lib/mongoid/commands/save.rb",
|
42
|
-
"lib/mongoid/commands/validate.rb",
|
43
42
|
"lib/mongoid/criteria.rb",
|
44
43
|
"lib/mongoid/document.rb",
|
45
44
|
"lib/mongoid/dynamic_finder.rb",
|
@@ -89,7 +88,6 @@ Gem::Specification.new do |s|
|
|
89
88
|
"spec/unit/mongoid/commands/destroy_all_spec.rb",
|
90
89
|
"spec/unit/mongoid/commands/destroy_spec.rb",
|
91
90
|
"spec/unit/mongoid/commands/save_spec.rb",
|
92
|
-
"spec/unit/mongoid/commands/validate_spec.rb",
|
93
91
|
"spec/unit/mongoid/commands_spec.rb",
|
94
92
|
"spec/unit/mongoid/criteria_spec.rb",
|
95
93
|
"spec/unit/mongoid/document_spec.rb",
|
@@ -143,7 +141,6 @@ Gem::Specification.new do |s|
|
|
143
141
|
"spec/unit/mongoid/commands/destroy_all_spec.rb",
|
144
142
|
"spec/unit/mongoid/commands/destroy_spec.rb",
|
145
143
|
"spec/unit/mongoid/commands/save_spec.rb",
|
146
|
-
"spec/unit/mongoid/commands/validate_spec.rb",
|
147
144
|
"spec/unit/mongoid/commands_spec.rb",
|
148
145
|
"spec/unit/mongoid/criteria_spec.rb",
|
149
146
|
"spec/unit/mongoid/document_spec.rb",
|
@@ -178,28 +175,28 @@ Gem::Specification.new do |s|
|
|
178
175
|
s.specification_version = 3
|
179
176
|
|
180
177
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
181
|
-
s.add_runtime_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
182
|
-
s.add_runtime_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
183
178
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
184
179
|
s.add_runtime_dependency(%q<mongo>, [">= 0.18.1"])
|
185
180
|
s.add_runtime_dependency(%q<mongo_ext>, [">= 0.18.1"])
|
181
|
+
s.add_runtime_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
182
|
+
s.add_runtime_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
186
183
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
187
184
|
s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
|
188
185
|
else
|
189
|
-
s.add_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
190
|
-
s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
191
186
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
192
187
|
s.add_dependency(%q<mongo>, [">= 0.18.1"])
|
193
188
|
s.add_dependency(%q<mongo_ext>, [">= 0.18.1"])
|
189
|
+
s.add_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
190
|
+
s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
194
191
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
195
192
|
s.add_dependency(%q<mocha>, [">= 0.9.8"])
|
196
193
|
end
|
197
194
|
else
|
198
|
-
s.add_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
199
|
-
s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
200
195
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
201
196
|
s.add_dependency(%q<mongo>, [">= 0.18.1"])
|
202
197
|
s.add_dependency(%q<mongo_ext>, [">= 0.18.1"])
|
198
|
+
s.add_dependency(%q<durran-validatable>, [">= 1.8.3"])
|
199
|
+
s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
|
203
200
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
204
201
|
s.add_dependency(%q<mocha>, [">= 0.9.8"])
|
205
202
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -37,7 +37,8 @@ class Person < Mongoid::Document
|
|
37
37
|
has_one :name
|
38
38
|
has_one :pet, :class_name => "Animal"
|
39
39
|
|
40
|
-
accepts_nested_attributes_for :addresses, :
|
40
|
+
accepts_nested_attributes_for :addresses, :reject_if => lambda { |attrs| attrs["street"].blank? }
|
41
|
+
accepts_nested_attributes_for :name
|
41
42
|
|
42
43
|
index :title
|
43
44
|
index :dob
|
@@ -131,12 +132,15 @@ end
|
|
131
132
|
|
132
133
|
class Comment < Mongoid::Document
|
133
134
|
include Mongoid::Versioning
|
135
|
+
include Mongoid::Timestamps
|
134
136
|
field :text
|
135
137
|
key :text
|
138
|
+
validates_presence_of :text
|
136
139
|
end
|
137
140
|
|
138
141
|
class Post < Mongoid::Document
|
139
142
|
include Mongoid::Versioning
|
143
|
+
include Mongoid::Timestamps
|
140
144
|
field :title
|
141
145
|
belongs_to_related :person
|
142
146
|
end
|
@@ -16,6 +16,21 @@ describe Mongoid::Attributes do
|
|
16
16
|
|
17
17
|
context "on a has many association" do
|
18
18
|
|
19
|
+
context "when a reject block supplied" do
|
20
|
+
|
21
|
+
before do
|
22
|
+
@attributes = {
|
23
|
+
"0" => { "city" => "San Francisco" }
|
24
|
+
}
|
25
|
+
@person.addresses_attributes = @attributes
|
26
|
+
end
|
27
|
+
|
28
|
+
it "removes the attributes that match" do
|
29
|
+
@person.addresses.should be_empty
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
19
34
|
context "when association is empty" do
|
20
35
|
|
21
36
|
before do
|
@@ -177,4 +177,23 @@ describe Mongoid::Commands do
|
|
177
177
|
|
178
178
|
end
|
179
179
|
|
180
|
+
describe "#valid?" do
|
181
|
+
|
182
|
+
before do
|
183
|
+
@comment = Comment.new
|
184
|
+
end
|
185
|
+
|
186
|
+
it "validates the document" do
|
187
|
+
@comment.valid?.should be_false
|
188
|
+
end
|
189
|
+
|
190
|
+
it "runs the validation callbacks" do
|
191
|
+
@comment.expects(:run_callbacks).with(:validate)
|
192
|
+
@comment.expects(:run_callbacks).with(:before_validation)
|
193
|
+
@comment.expects(:run_callbacks).with(:after_validation)
|
194
|
+
@comment.valid?
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
198
|
+
|
180
199
|
end
|
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: 0.9.
|
4
|
+
version: 0.9.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Durran Jordan
|
@@ -9,58 +9,58 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-20 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: activesupport
|
17
17
|
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 2.3.4
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: mongo
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.18.1
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: mongo_ext
|
37
37
|
type: :runtime
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 0.18.1
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
46
|
+
name: durran-validatable
|
47
47
|
type: :runtime
|
48
48
|
version_requirement:
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 1.8.3
|
54
54
|
version:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: leshill-will_paginate
|
57
57
|
type: :runtime
|
58
58
|
version_requirement:
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 2.3.11
|
64
64
|
version:
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: rspec
|
@@ -115,7 +115,6 @@ files:
|
|
115
115
|
- lib/mongoid/commands/destroy.rb
|
116
116
|
- lib/mongoid/commands/destroy_all.rb
|
117
117
|
- lib/mongoid/commands/save.rb
|
118
|
-
- lib/mongoid/commands/validate.rb
|
119
118
|
- lib/mongoid/criteria.rb
|
120
119
|
- lib/mongoid/document.rb
|
121
120
|
- lib/mongoid/dynamic_finder.rb
|
@@ -165,7 +164,6 @@ files:
|
|
165
164
|
- spec/unit/mongoid/commands/destroy_all_spec.rb
|
166
165
|
- spec/unit/mongoid/commands/destroy_spec.rb
|
167
166
|
- spec/unit/mongoid/commands/save_spec.rb
|
168
|
-
- spec/unit/mongoid/commands/validate_spec.rb
|
169
167
|
- spec/unit/mongoid/commands_spec.rb
|
170
168
|
- spec/unit/mongoid/criteria_spec.rb
|
171
169
|
- spec/unit/mongoid/document_spec.rb
|
@@ -241,7 +239,6 @@ test_files:
|
|
241
239
|
- spec/unit/mongoid/commands/destroy_all_spec.rb
|
242
240
|
- spec/unit/mongoid/commands/destroy_spec.rb
|
243
241
|
- spec/unit/mongoid/commands/save_spec.rb
|
244
|
-
- spec/unit/mongoid/commands/validate_spec.rb
|
245
242
|
- spec/unit/mongoid/commands_spec.rb
|
246
243
|
- spec/unit/mongoid/criteria_spec.rb
|
247
244
|
- spec/unit/mongoid/document_spec.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc:
|
3
|
-
module Commands
|
4
|
-
class Validate
|
5
|
-
# Performs validation of the supplied +Document+, handling all associated
|
6
|
-
# callbacks.
|
7
|
-
#
|
8
|
-
# Options:
|
9
|
-
#
|
10
|
-
# doc: A +Document+ that is going to be persisted.
|
11
|
-
#
|
12
|
-
# Returns: +true+ if validation passes, +false+ if not.
|
13
|
-
def self.execute(doc)
|
14
|
-
doc.run_callbacks(:before_validation)
|
15
|
-
validated = doc.valid?
|
16
|
-
doc.run_callbacks(:after_validation)
|
17
|
-
return validated
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::Validate do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@document = stub(:run_callbacks)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "validates the document" do
|
12
|
-
@document.expects(:valid?).returns(true)
|
13
|
-
Mongoid::Commands::Validate.execute(@document).should be_true
|
14
|
-
end
|
15
|
-
|
16
|
-
it "runs the before and after validate callbacks" do
|
17
|
-
@document.expects(:valid?).returns(true)
|
18
|
-
@document.expects(:run_callbacks).with(:before_validation)
|
19
|
-
@document.expects(:run_callbacks).with(:after_validation)
|
20
|
-
Mongoid::Commands::Validate.execute(@document)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|