mongoid 1.2.14 → 1.9.0

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.
Files changed (200) hide show
  1. data/lib/mongoid.rb +10 -3
  2. data/lib/mongoid/associations.rb +133 -97
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/{belongs_to.rb → embedded_in.rb} +14 -6
  5. data/lib/mongoid/associations/{has_many.rb → embeds_many.rb} +89 -31
  6. data/lib/mongoid/associations/{has_one.rb → embeds_one.rb} +8 -7
  7. data/lib/mongoid/associations/has_many_related.rb +52 -7
  8. data/lib/mongoid/associations/has_one_related.rb +8 -4
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +6 -1
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +27 -12
  13. data/lib/mongoid/collection.rb +4 -3
  14. data/lib/mongoid/collections.rb +41 -0
  15. data/lib/mongoid/collections/master.rb +3 -2
  16. data/lib/mongoid/collections/slaves.rb +3 -2
  17. data/lib/mongoid/components.rb +21 -19
  18. data/lib/mongoid/concern.rb +31 -0
  19. data/lib/mongoid/config.rb +117 -12
  20. data/lib/mongoid/contexts.rb +1 -1
  21. data/lib/mongoid/contexts/enumerable.rb +1 -1
  22. data/lib/mongoid/contexts/mongo.rb +1 -1
  23. data/lib/mongoid/contexts/paging.rb +10 -2
  24. data/lib/mongoid/criterion/inclusion.rb +17 -0
  25. data/lib/mongoid/criterion/optional.rb +1 -1
  26. data/lib/mongoid/dirty.rb +253 -0
  27. data/lib/mongoid/document.rb +81 -52
  28. data/lib/mongoid/errors.rb +32 -1
  29. data/lib/mongoid/extensions.rb +11 -9
  30. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  31. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  32. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  33. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  34. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  35. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  36. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  37. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  38. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  39. data/lib/mongoid/extensions/object/conversions.rb +1 -1
  40. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  41. data/lib/mongoid/extensions/symbol/inflections.rb +1 -1
  42. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  43. data/lib/mongoid/extras.rb +6 -9
  44. data/lib/mongoid/factory.rb +2 -1
  45. data/lib/mongoid/field.rb +9 -2
  46. data/lib/mongoid/fields.rb +1 -0
  47. data/lib/mongoid/identity.rb +3 -3
  48. data/lib/mongoid/indexes.rb +3 -3
  49. data/lib/mongoid/memoization.rb +8 -2
  50. data/lib/mongoid/named_scope.rb +0 -3
  51. data/lib/mongoid/observable.rb +30 -0
  52. data/lib/mongoid/paths.rb +62 -0
  53. data/lib/mongoid/persistence.rb +222 -0
  54. data/lib/mongoid/persistence/command.rb +39 -0
  55. data/lib/mongoid/persistence/insert.rb +50 -0
  56. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  57. data/lib/mongoid/persistence/remove.rb +39 -0
  58. data/lib/mongoid/persistence/remove_all.rb +37 -0
  59. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  60. data/lib/mongoid/persistence/update.rb +63 -0
  61. data/lib/mongoid/state.rb +28 -21
  62. data/lib/mongoid/timestamps.rb +5 -8
  63. data/lib/mongoid/version.rb +4 -0
  64. data/lib/mongoid/versioning.rb +6 -7
  65. metadata +81 -300
  66. data/.gitignore +0 -6
  67. data/.watchr +0 -29
  68. data/Rakefile +0 -53
  69. data/VERSION +0 -1
  70. data/caliper.yml +0 -4
  71. data/lib/mongoid/collections/mimic.rb +0 -46
  72. data/lib/mongoid/commands.rb +0 -174
  73. data/lib/mongoid/commands/create.rb +0 -21
  74. data/lib/mongoid/commands/delete.rb +0 -16
  75. data/lib/mongoid/commands/delete_all.rb +0 -23
  76. data/lib/mongoid/commands/deletion.rb +0 -18
  77. data/lib/mongoid/commands/destroy.rb +0 -19
  78. data/lib/mongoid/commands/destroy_all.rb +0 -23
  79. data/lib/mongoid/commands/save.rb +0 -27
  80. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  81. data/mongoid.gemspec +0 -395
  82. data/perf/benchmark.rb +0 -77
  83. data/spec/integration/mongoid/associations_spec.rb +0 -340
  84. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  85. data/spec/integration/mongoid/commands_spec.rb +0 -218
  86. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  87. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  88. data/spec/integration/mongoid/document_spec.rb +0 -593
  89. data/spec/integration/mongoid/extensions_spec.rb +0 -26
  90. data/spec/integration/mongoid/finders_spec.rb +0 -119
  91. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  92. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  93. data/spec/models/address.rb +0 -39
  94. data/spec/models/animal.rb +0 -6
  95. data/spec/models/callbacks.rb +0 -18
  96. data/spec/models/comment.rb +0 -8
  97. data/spec/models/country_code.rb +0 -6
  98. data/spec/models/employer.rb +0 -5
  99. data/spec/models/game.rb +0 -7
  100. data/spec/models/inheritance.rb +0 -56
  101. data/spec/models/location.rb +0 -5
  102. data/spec/models/mixed_drink.rb +0 -4
  103. data/spec/models/name.rb +0 -13
  104. data/spec/models/namespacing.rb +0 -11
  105. data/spec/models/patient.rb +0 -4
  106. data/spec/models/person.rb +0 -99
  107. data/spec/models/pet.rb +0 -7
  108. data/spec/models/pet_owner.rb +0 -6
  109. data/spec/models/phone.rb +0 -7
  110. data/spec/models/post.rb +0 -15
  111. data/spec/models/translation.rb +0 -5
  112. data/spec/models/vet_visit.rb +0 -5
  113. data/spec/spec.opts +0 -3
  114. data/spec/spec_helper.rb +0 -31
  115. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  116. data/spec/unit/mongoid/associations/belongs_to_spec.rb +0 -193
  117. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -420
  118. data/spec/unit/mongoid/associations/has_many_spec.rb +0 -519
  119. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  120. data/spec/unit/mongoid/associations/has_one_spec.rb +0 -282
  121. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  122. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  123. data/spec/unit/mongoid/associations_spec.rb +0 -595
  124. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  125. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  126. data/spec/unit/mongoid/collection_spec.rb +0 -187
  127. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  128. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  129. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  130. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  131. data/spec/unit/mongoid/commands/create_spec.rb +0 -30
  132. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  133. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  134. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -23
  135. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -50
  136. data/spec/unit/mongoid/commands/save_spec.rb +0 -105
  137. data/spec/unit/mongoid/commands_spec.rb +0 -275
  138. data/spec/unit/mongoid/config_spec.rb +0 -172
  139. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  140. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  141. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  142. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  143. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  144. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  145. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  146. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  147. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  148. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  149. data/spec/unit/mongoid/document_spec.rb +0 -952
  150. data/spec/unit/mongoid/errors_spec.rb +0 -103
  151. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  152. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  153. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  154. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  155. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  156. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  157. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  158. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  159. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -70
  160. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  161. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  162. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  163. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  164. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  165. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  166. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  167. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  168. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  169. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  170. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  171. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  172. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  173. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  174. data/spec/unit/mongoid/extras_spec.rb +0 -102
  175. data/spec/unit/mongoid/factory_spec.rb +0 -31
  176. data/spec/unit/mongoid/field_spec.rb +0 -143
  177. data/spec/unit/mongoid/fields_spec.rb +0 -181
  178. data/spec/unit/mongoid/finders_spec.rb +0 -404
  179. data/spec/unit/mongoid/identity_spec.rb +0 -109
  180. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  181. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  182. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  183. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  184. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  185. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  186. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  187. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  188. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  189. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  190. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  191. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  192. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  193. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  194. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  195. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  196. data/spec/unit/mongoid/scope_spec.rb +0 -240
  197. data/spec/unit/mongoid/state_spec.rb +0 -83
  198. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  199. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  200. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions do
4
-
5
- context "setting floating point numbers" do
6
-
7
- context "when value is an empty string" do
8
-
9
- let(:person) { Person.new(:ssn => "555555555555555") }
10
-
11
- before do
12
- Person.validates_numericality_of :blood_alcohol_content, :allow_blank => true
13
- end
14
-
15
- after do
16
- Person.validations.clear
17
- end
18
-
19
- it "does not set the value" do
20
- person.save.should be_true
21
- end
22
-
23
- end
24
- end
25
-
26
- end
@@ -1,119 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Finders do
4
-
5
- describe "#find" do
6
-
7
- context "using string ids" do
8
-
9
- before do
10
- @documents = []
11
- @document = Person.create(:title => "Mrs.", :ssn => "another")
12
- 3.times do |n|
13
- @documents << Person.create(:title => "Mr.", :ssn => "#{n}22")
14
- end
15
- end
16
-
17
- after do
18
- Person.delete_all
19
- end
20
-
21
- context "with an id as an argument" do
22
-
23
- context "when the document is found" do
24
-
25
- it "returns the document" do
26
- Person.find(@document.id).should == @document
27
- end
28
-
29
- end
30
-
31
- context "when the document is not found" do
32
-
33
- it "raises an error" do
34
- lambda { Person.find("5") }.should raise_error
35
- end
36
-
37
- end
38
-
39
- end
40
-
41
- context "with an array of ids as args" do
42
-
43
- context "when the documents are found" do
44
-
45
- it "returns an array of the documents" do
46
- @people = Person.find(@documents.map(&:id))
47
- @people.should == @documents
48
- end
49
-
50
- end
51
-
52
- context "when no documents found" do
53
-
54
- it "raises an error" do
55
- lambda { Person.find(["11", "21", "31"]) }.should raise_error
56
- end
57
-
58
- end
59
- end
60
- end
61
-
62
- context "using object ids" do
63
-
64
- before do
65
- Mongoid.use_object_ids = true
66
- @documents = []
67
- @document = Person.create(:title => "Mrs.", :ssn => "another")
68
- 3.times do |n|
69
- @documents << Person.create(:title => "Mr.", :ssn => "#{n}22")
70
- end
71
- end
72
-
73
- after do
74
- Mongoid.use_object_ids = false
75
- Person.delete_all
76
- end
77
-
78
- context "with an id as an argument" do
79
-
80
- context "when the document is found" do
81
-
82
- it "returns the document" do
83
- Person.find(@document.id).should == @document
84
- end
85
-
86
- end
87
-
88
- context "when the document is not found" do
89
-
90
- it "raises an error" do
91
- lambda { Person.find("5") }.should raise_error
92
- end
93
-
94
- end
95
-
96
- end
97
-
98
- context "with an array of ids as args" do
99
-
100
- context "when the documents are found" do
101
-
102
- it "returns an array of the documents" do
103
- @people = Person.find(@documents.map(&:id))
104
- @people.should == @documents
105
- end
106
-
107
- end
108
-
109
- context "when no documents found" do
110
-
111
- it "raises an error" do
112
- lambda { Person.find(["11", "21", "31"]) }.should raise_error
113
- end
114
-
115
- end
116
- end
117
- end
118
- end
119
- end
@@ -1,137 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Document do
4
-
5
- before do
6
- Browser.delete_all
7
- Firefox.delete_all
8
- Canvas.delete_all
9
- end
10
-
11
- context "when document is a subclass of a root class" do
12
-
13
- before do
14
- Browser.delete_all
15
- @browser = Browser.create(:version => 3, :name => "Test")
16
- end
17
-
18
- it "saves in the same collection as the root" do
19
- collection = Mongoid.master.collection("canvases")
20
- attributes = collection.find({ :name => "Test"}, {}).next_document
21
- attributes["version"].should == 3
22
- attributes["name"].should == "Test"
23
- attributes["_type"].should == "Browser"
24
- attributes["_id"].should == @browser.id
25
- end
26
-
27
- end
28
-
29
- context "when document is a subclass of a subclass" do
30
-
31
- before do
32
- Firefox.delete_all
33
- @firefox = Firefox.create(:version => 2, :name => "Testy")
34
- end
35
-
36
- it "saves in the same collection as the root" do
37
- collection = Mongoid.master.collection("canvases")
38
- attributes = collection.find({ :name => "Testy"}, {}).next_document
39
- attributes["version"].should == 2
40
- attributes["name"].should == "Testy"
41
- attributes["_type"].should == "Firefox"
42
- attributes["_id"].should == @firefox.id
43
- end
44
-
45
- it "returns the document when querying for superclass" do
46
- Browser.where(:name => "Testy").first.should == @firefox
47
- end
48
-
49
- it "returns the document when querying for root class" do
50
- Canvas.where(:name => "Testy").first.should == @firefox
51
- end
52
-
53
- end
54
-
55
- context "when document has associations" do
56
-
57
- before do
58
- Firefox.delete_all
59
- @firefox = Firefox.new(:name => "firefox")
60
- @writer = HtmlWriter.new(:speed => 100)
61
- @circle = Circle.new(:radius => 50)
62
- @square = Square.new(:width => 300, :height => 150)
63
- @firefox.writer = @writer
64
- @firefox.shapes << [ @circle, @square ]
65
- @firefox.save
66
- end
67
-
68
- after do
69
- Firefox.delete_all
70
- end
71
-
72
- it "properly saves a has one subclass" do
73
- from_db = Firefox.find(@firefox.id)
74
- from_db.should be_a_kind_of(Firefox)
75
- from_db.writer.should be_a_kind_of(HtmlWriter)
76
- from_db.writer.should == @writer
77
- end
78
-
79
- it "properly saves a has many subclass" do
80
- from_db = Firefox.find(@firefox.id)
81
- from_db.shapes.first.should == @circle
82
- from_db.shapes.first.should be_a_kind_of(Circle)
83
- from_db.shapes.last.should == @square
84
- from_db.shapes.last.should be_a_kind_of(Square)
85
- end
86
-
87
- it "properly sets up the belongs to" do
88
- from_db = Firefox.find(@firefox.id)
89
- circle = from_db.shapes.first
90
- circle.should == @circle
91
- circle.canvas.should == @firefox
92
- end
93
-
94
- end
95
-
96
- context "when document has subclasses" do
97
-
98
- before do
99
- @firefox = Firefox.create(:name => "firefox")
100
- end
101
-
102
- after do
103
- Firefox.delete_all
104
- end
105
-
106
- it "returns subclasses for querying parents" do
107
- firefox = Canvas.where(:name => "firefox").first
108
- firefox.should be_a_kind_of(Firefox)
109
- firefox.should == @firefox
110
- end
111
-
112
- end
113
-
114
- context "deleting subclasses" do
115
-
116
- before do
117
- @firefox = Firefox.create(:name => "firefox")
118
- @browser = Browser.create(:name => "browser")
119
- @canvas = Canvas.create(:name => "canvas")
120
- end
121
-
122
- after do
123
- Firefox.delete_all
124
- Browser.delete_all
125
- Canvas.delete_all
126
- end
127
-
128
- it "deletes from the parent class collection" do
129
- @firefox.delete
130
- Firefox.count.should == 0
131
- Browser.count.should == 1
132
- Canvas.count.should == 2
133
- end
134
-
135
- end
136
-
137
- end
@@ -1,46 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::NamedScope do
4
-
5
- describe ".named_scope" do
6
-
7
- class ::Person
8
- named_scope :doctors, {:where => {:title => 'Dr.'} }
9
- named_scope :old, criteria.where(:age.gt => 50)
10
- end
11
-
12
- before do
13
- @document = Person.create(:title => "Dr.", :age => 65, :terms => true)
14
- end
15
-
16
- after do
17
- Person.delete_all
18
- end
19
-
20
- context "accessing a single named scope" do
21
-
22
- it "returns the document" do
23
- Person.doctors.first.should == @document
24
- end
25
-
26
- end
27
-
28
- context "chaining named scopes" do
29
-
30
- it "returns the document" do
31
- Person.old.doctors.first.should == @document
32
- end
33
-
34
- end
35
-
36
- context "mixing named scopes and class methods" do
37
-
38
- it "returns the document" do
39
- Person.accepted.old.doctors.first.should == @document
40
- end
41
-
42
- end
43
-
44
- end
45
-
46
- end
@@ -1,39 +0,0 @@
1
- class Address
2
- include Mongoid::Document
3
- field :address_type
4
- field :number, :type => Integer
5
- field :street
6
- field :city
7
- field :state
8
- field :post_code
9
- field :parent_title
10
- field :services, :type => Array
11
- key :street
12
- has_many :locations
13
-
14
- belongs_to :addressable, :inverse_of => :addresses do
15
- def extension
16
- "Testing"
17
- end
18
- def doctor?
19
- title == "Dr"
20
- end
21
- end
22
-
23
- named_scope :rodeo, where(:street => "Rodeo Dr")
24
-
25
- def set_parent=(set = false)
26
- self.parent_title = addressable.title if set
27
- end
28
-
29
- class << self
30
- def california
31
- where(:state => "CA")
32
- end
33
-
34
- def homes
35
- where(:address_type => "Home")
36
- end
37
-
38
- end
39
- end
@@ -1,6 +0,0 @@
1
- class Animal
2
- include Mongoid::Document
3
- field :name
4
- key :name
5
- belongs_to :person, :inverse_of => :pet
6
- end
@@ -1,18 +0,0 @@
1
- class Artist
2
- include Mongoid::Document
3
- field :name
4
- has_many :songs
5
-
6
- after_create :create_songs
7
-
8
- protected
9
- def create_songs
10
- 2.times { |n| songs.create!(:title => "#{n}") }
11
- end
12
- end
13
-
14
- class Song
15
- include Mongoid::Document
16
- field :title
17
- belongs_to :artist, :inverse_of => :songs
18
- end
@@ -1,8 +0,0 @@
1
- class Comment
2
- include Mongoid::Document
3
- include Mongoid::Versioning
4
- include Mongoid::Timestamps
5
- field :text
6
- key :text
7
- validates_presence_of :text
8
- end
@@ -1,6 +0,0 @@
1
- class CountryCode
2
- include Mongoid::Document
3
- field :code, :type => Integer
4
- key :code
5
- belongs_to :phone_number, :inverse_of => :country_codes
6
- end
@@ -1,5 +0,0 @@
1
- class Employer
2
- def id
3
- "1"
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- class Game
2
- include Mongoid::Document
3
- field :high_score, :default => 500
4
- field :score, :type => Integer, :default => 0
5
- belongs_to_related :person
6
- enslave and cache
7
- end
@@ -1,56 +0,0 @@
1
- class Canvas
2
- include Mongoid::Document
3
- field :name
4
- has_many :shapes
5
- has_one :writer
6
-
7
- def render
8
- shapes.each { |shape| render }
9
- end
10
- end
11
-
12
- class Browser < Canvas
13
- field :version, :type => Integer
14
- def render; end
15
- end
16
-
17
- class Firefox < Browser
18
- field :user_agent
19
- def render; end
20
- end
21
-
22
- class Shape
23
- include Mongoid::Document
24
- field :x, :type => Integer, :default => 0
25
- field :y, :type => Integer, :default => 0
26
-
27
- belongs_to :canvas, :inverse_of => :shapes
28
-
29
- def render; end
30
- end
31
-
32
- class Square < Shape
33
- field :width, :type => Integer, :default => 0
34
- field :height, :type => Integer, :default => 0
35
- end
36
-
37
- class Circle < Shape
38
- field :radius, :type => Integer, :default => 0
39
- end
40
-
41
- class Writer
42
- include Mongoid::Document
43
- field :speed, :type => Integer, :default => 0
44
-
45
- belongs_to :canvas, :inverse_of => :writer
46
-
47
- def write; end
48
- end
49
-
50
- class HtmlWriter < Writer
51
- def write; end
52
- end
53
-
54
- class PdfWriter < Writer
55
- def write; end
56
- end