mongoid 2.0.0.alpha → 2.0.0.beta.5

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 (216) hide show
  1. data/lib/mongoid.rb +11 -5
  2. data/lib/mongoid/associations.rb +112 -107
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/embedded_in.rb +12 -4
  5. data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
  6. data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
  7. data/lib/mongoid/associations/has_many_related.rb +51 -5
  8. data/lib/mongoid/associations/has_one_related.rb +9 -5
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +15 -6
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +34 -13
  13. data/lib/mongoid/callbacks.rb +1 -2
  14. data/lib/mongoid/collection.rb +4 -3
  15. data/lib/mongoid/collections.rb +41 -0
  16. data/lib/mongoid/collections/master.rb +3 -2
  17. data/lib/mongoid/collections/slaves.rb +3 -2
  18. data/lib/mongoid/components.rb +4 -1
  19. data/lib/mongoid/config.rb +163 -13
  20. data/lib/mongoid/contexts.rb +1 -2
  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/criteria.rb +13 -22
  25. data/lib/mongoid/criterion/exclusion.rb +3 -3
  26. data/lib/mongoid/criterion/inclusion.rb +17 -0
  27. data/lib/mongoid/criterion/optional.rb +1 -1
  28. data/lib/mongoid/dirty.rb +253 -0
  29. data/lib/mongoid/document.rb +40 -85
  30. data/lib/mongoid/errors.rb +48 -1
  31. data/lib/mongoid/extensions.rb +11 -9
  32. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  33. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  34. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  35. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  36. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  37. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  38. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  39. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  40. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  41. data/lib/mongoid/extensions/object/conversions.rb +3 -3
  42. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  43. data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
  44. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  45. data/lib/mongoid/factory.rb +2 -1
  46. data/lib/mongoid/field.rb +15 -2
  47. data/lib/mongoid/fields.rb +1 -1
  48. data/lib/mongoid/identity.rb +3 -3
  49. data/lib/mongoid/indexes.rb +3 -3
  50. data/lib/mongoid/matchers.rb +1 -2
  51. data/lib/mongoid/memoization.rb +8 -2
  52. data/lib/mongoid/named_scope.rb +0 -5
  53. data/lib/mongoid/observable.rb +1 -1
  54. data/lib/mongoid/paths.rb +30 -22
  55. data/lib/mongoid/persistence.rb +218 -0
  56. data/lib/mongoid/persistence/command.rb +39 -0
  57. data/lib/mongoid/persistence/insert.rb +47 -0
  58. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  59. data/lib/mongoid/persistence/remove.rb +39 -0
  60. data/lib/mongoid/persistence/remove_all.rb +37 -0
  61. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  62. data/lib/mongoid/persistence/update.rb +63 -0
  63. data/lib/mongoid/railtie.rb +53 -0
  64. data/lib/mongoid/railties/database.rake +37 -0
  65. data/lib/mongoid/timestamps.rb +2 -2
  66. data/lib/mongoid/validations.rb +2 -2
  67. data/lib/mongoid/validations/associated.rb +2 -2
  68. data/lib/mongoid/validations/uniqueness.rb +13 -2
  69. data/lib/mongoid/version.rb +4 -0
  70. data/lib/mongoid/versioning.rb +3 -2
  71. data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
  72. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
  73. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  74. data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
  75. data/lib/rails/generators/mongoid_generator.rb +61 -0
  76. metadata +76 -301
  77. data/.gitignore +0 -6
  78. data/.watchr +0 -29
  79. data/Rakefile +0 -52
  80. data/VERSION +0 -1
  81. data/caliper.yml +0 -4
  82. data/lib/mongoid/collections/mimic.rb +0 -46
  83. data/lib/mongoid/commands.rb +0 -161
  84. data/lib/mongoid/commands/create.rb +0 -19
  85. data/lib/mongoid/commands/delete.rb +0 -16
  86. data/lib/mongoid/commands/delete_all.rb +0 -23
  87. data/lib/mongoid/commands/deletion.rb +0 -18
  88. data/lib/mongoid/commands/destroy.rb +0 -17
  89. data/lib/mongoid/commands/destroy_all.rb +0 -23
  90. data/lib/mongoid/commands/save.rb +0 -29
  91. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  92. data/mongoid.gemspec +0 -408
  93. data/perf/benchmark.rb +0 -77
  94. data/spec/integration/mongoid/associations_spec.rb +0 -340
  95. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  96. data/spec/integration/mongoid/commands_spec.rb +0 -227
  97. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  98. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  99. data/spec/integration/mongoid/document_spec.rb +0 -650
  100. data/spec/integration/mongoid/extensions_spec.rb +0 -22
  101. data/spec/integration/mongoid/finders_spec.rb +0 -119
  102. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  103. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  104. data/spec/models/address.rb +0 -39
  105. data/spec/models/animal.rb +0 -6
  106. data/spec/models/callbacks.rb +0 -18
  107. data/spec/models/comment.rb +0 -8
  108. data/spec/models/country_code.rb +0 -6
  109. data/spec/models/employer.rb +0 -5
  110. data/spec/models/game.rb +0 -7
  111. data/spec/models/inheritance.rb +0 -56
  112. data/spec/models/location.rb +0 -5
  113. data/spec/models/mixed_drink.rb +0 -4
  114. data/spec/models/name.rb +0 -13
  115. data/spec/models/namespacing.rb +0 -11
  116. data/spec/models/patient.rb +0 -4
  117. data/spec/models/person.rb +0 -99
  118. data/spec/models/pet.rb +0 -7
  119. data/spec/models/pet_owner.rb +0 -6
  120. data/spec/models/phone.rb +0 -7
  121. data/spec/models/post.rb +0 -15
  122. data/spec/models/translation.rb +0 -5
  123. data/spec/models/vet_visit.rb +0 -5
  124. data/spec/spec.opts +0 -3
  125. data/spec/spec_helper.rb +0 -31
  126. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  127. data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
  128. data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
  129. data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
  130. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
  131. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  132. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  133. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  134. data/spec/unit/mongoid/associations_spec.rb +0 -595
  135. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  136. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  137. data/spec/unit/mongoid/collection_spec.rb +0 -187
  138. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  139. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  140. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  141. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  142. data/spec/unit/mongoid/commands/create_spec.rb +0 -31
  143. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  144. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  145. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
  146. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
  147. data/spec/unit/mongoid/commands/save_spec.rb +0 -107
  148. data/spec/unit/mongoid/commands_spec.rb +0 -270
  149. data/spec/unit/mongoid/config_spec.rb +0 -172
  150. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  151. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  152. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  153. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  154. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  155. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  156. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  157. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  158. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  159. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  160. data/spec/unit/mongoid/document_spec.rb +0 -818
  161. data/spec/unit/mongoid/errors_spec.rb +0 -103
  162. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  163. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  164. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  165. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  166. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  167. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  168. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  169. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  170. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
  171. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  172. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  173. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  174. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  175. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  176. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  177. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  178. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  179. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  180. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  181. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  182. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  183. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  184. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  185. data/spec/unit/mongoid/extras_spec.rb +0 -102
  186. data/spec/unit/mongoid/factory_spec.rb +0 -31
  187. data/spec/unit/mongoid/field_spec.rb +0 -143
  188. data/spec/unit/mongoid/fields_spec.rb +0 -181
  189. data/spec/unit/mongoid/finders_spec.rb +0 -404
  190. data/spec/unit/mongoid/identity_spec.rb +0 -109
  191. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  192. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  193. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  194. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  195. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  196. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  197. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  198. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  199. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  200. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  201. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  202. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  203. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  204. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  205. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  206. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  207. data/spec/unit/mongoid/observable_spec.rb +0 -46
  208. data/spec/unit/mongoid/paths_spec.rb +0 -124
  209. data/spec/unit/mongoid/scope_spec.rb +0 -240
  210. data/spec/unit/mongoid/state_spec.rb +0 -83
  211. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  212. data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
  213. data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
  214. data/spec/unit/mongoid/validations_spec.rb +0 -190
  215. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  216. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,22 +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
- it "does not set the value" do
16
- person.save.should be_true
17
- end
18
-
19
- end
20
- end
21
-
22
- 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
- embed_many :locations
13
-
14
- embedded_in :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
- embedded_in :person, :inverse_of => :pet
6
- end
@@ -1,18 +0,0 @@
1
- class Artist
2
- include Mongoid::Document
3
- field :name
4
- embed_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
- embedded_in :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
- embedded_in :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
- embed_many :shapes
5
- embed_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
- embedded_in :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
- embedded_in :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