mongoid 0.7.10 → 0.8.1
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/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/mongoid.rb +1 -1
- data/lib/mongoid/associations.rb +5 -5
- data/lib/mongoid/associations/has_many.rb +3 -3
- data/lib/mongoid/associations/has_one.rb +3 -3
- data/lib/mongoid/associations/options.rb +31 -0
- data/lib/mongoid/extensions/date/conversions.rb +2 -2
- data/lib/mongoid/extensions/time/conversions.rb +1 -1
- data/mongoid.gemspec +11 -11
- data/spec/spec_helper.rb +14 -0
- data/spec/unit/mongoid/associations/accessor_spec.rb +45 -14
- data/spec/unit/mongoid/associations/belongs_to_spec.rb +3 -3
- data/spec/unit/mongoid/associations/has_many_spec.rb +23 -11
- data/spec/unit/mongoid/associations/has_one_spec.rb +9 -2
- data/spec/unit/mongoid/{options_spec.rb → associations/options_spec.rb} +13 -13
- metadata +7 -7
- data/lib/mongoid/options.rb +0 -30
data/Rakefile
CHANGED
@@ -15,8 +15,8 @@ begin
|
|
15
15
|
gem.add_dependency("durran-validatable", "1.8.2")
|
16
16
|
gem.add_dependency("will_paginate", "2.3.11")
|
17
17
|
gem.add_dependency("activesupport", "2.3.4")
|
18
|
-
gem.add_dependency("mongo", "0.
|
19
|
-
gem.add_dependency("mongo_ext", "0.
|
18
|
+
gem.add_dependency("mongo", "0.17")
|
19
|
+
gem.add_dependency("mongo_ext", "0.17")
|
20
20
|
end
|
21
21
|
Jeweler::GemcutterTasks.new
|
22
22
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.1
|
data/lib/mongoid.rb
CHANGED
@@ -36,12 +36,12 @@ require "active_support/time_with_zone"
|
|
36
36
|
require "will_paginate/collection"
|
37
37
|
require "mongo"
|
38
38
|
require "mongoid/associations"
|
39
|
+
require "mongoid/associations/options"
|
39
40
|
require "mongoid/attributes"
|
40
41
|
require "mongoid/commands"
|
41
42
|
require "mongoid/criteria"
|
42
43
|
require "mongoid/extensions"
|
43
44
|
require "mongoid/field"
|
44
|
-
require "mongoid/options"
|
45
45
|
require "mongoid/timestamps"
|
46
46
|
require "mongoid/versioning"
|
47
47
|
require "mongoid/document"
|
data/lib/mongoid/associations.rb
CHANGED
@@ -43,7 +43,7 @@ module Mongoid # :nodoc:
|
|
43
43
|
# end
|
44
44
|
def belongs_to(name, options = {})
|
45
45
|
@embedded = true
|
46
|
-
add_association(Associations::BelongsTo, Options.new(options.merge(:
|
46
|
+
add_association(Associations::BelongsTo, Associations::Options.new(options.merge(:name => name)))
|
47
47
|
end
|
48
48
|
|
49
49
|
# Adds the association from a parent document to its children. The name
|
@@ -64,7 +64,7 @@ module Mongoid # :nodoc:
|
|
64
64
|
# belongs_to :person
|
65
65
|
# end
|
66
66
|
def has_many(name, options = {})
|
67
|
-
add_association(Associations::HasMany, Options.new(options.merge(:
|
67
|
+
add_association(Associations::HasMany, Associations::Options.new(options.merge(:name => name)))
|
68
68
|
end
|
69
69
|
|
70
70
|
# Adds the association from a parent document to its child. The name
|
@@ -85,15 +85,15 @@ module Mongoid # :nodoc:
|
|
85
85
|
# belongs_to :person
|
86
86
|
# end
|
87
87
|
def has_one(name, options = {})
|
88
|
-
add_association(Associations::HasOne, Options.new(options.merge(:
|
88
|
+
add_association(Associations::HasOne, Associations::Options.new(options.merge(:name => name)))
|
89
89
|
end
|
90
90
|
|
91
91
|
private
|
92
92
|
# Adds the association to the associations hash with the type as the key,
|
93
93
|
# then adds the accessors for the association.
|
94
94
|
def add_association(type, options)
|
95
|
-
|
96
|
-
name =
|
95
|
+
name = options.name
|
96
|
+
associations[name] = type
|
97
97
|
define_method(name) do
|
98
98
|
return instance_variable_get("@#{name}") if instance_variable_defined?("@#{name}")
|
99
99
|
proxy = Associations::Accessor.get(type, self, options)
|
@@ -61,7 +61,7 @@ module Mongoid #:nodoc:
|
|
61
61
|
# essentially a proxy to an array itself.
|
62
62
|
def initialize(document, options)
|
63
63
|
@parent = document
|
64
|
-
@association_name = options.
|
64
|
+
@association_name = options.name
|
65
65
|
@klass = options.klass
|
66
66
|
attributes = document.attributes[@association_name]
|
67
67
|
@documents = attributes ? attributes.collect do |attribute|
|
@@ -77,13 +77,13 @@ module Mongoid #:nodoc:
|
|
77
77
|
# is initialized by setting the has_many to the supplied +Enumerable+
|
78
78
|
# and setting up the parentization.
|
79
79
|
def update(children, parent, options)
|
80
|
-
parent.attributes.delete(options.
|
80
|
+
parent.attributes.delete(options.name)
|
81
81
|
klass = options.klass
|
82
82
|
children.each do |child|
|
83
83
|
unless child.respond_to?(:parentize)
|
84
84
|
child = klass.new(child)
|
85
85
|
end
|
86
|
-
child.parentize(parent, options.
|
86
|
+
child.parentize(parent, options.name)
|
87
87
|
child.notify
|
88
88
|
end
|
89
89
|
new(parent, options)
|
@@ -15,9 +15,9 @@ module Mongoid #:nodoc:
|
|
15
15
|
# to the internal document itself.
|
16
16
|
def initialize(document, options)
|
17
17
|
@klass = options.klass
|
18
|
-
attributes = document.attributes[options.
|
18
|
+
attributes = document.attributes[options.name]
|
19
19
|
@document = klass.instantiate(attributes || {})
|
20
|
-
@document.parentize(document, options.
|
20
|
+
@document.parentize(document, options.name)
|
21
21
|
decorate!
|
22
22
|
end
|
23
23
|
|
@@ -29,7 +29,7 @@ module Mongoid #:nodoc:
|
|
29
29
|
klass = options.klass
|
30
30
|
child = klass.new(child)
|
31
31
|
end
|
32
|
-
child.parentize(parent, options.
|
32
|
+
child.parentize(parent, options.name)
|
33
33
|
child.notify
|
34
34
|
child
|
35
35
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Mongoid #:nodoc:
|
2
|
+
module Associations #:nodoc:
|
3
|
+
class Options #:nodoc:
|
4
|
+
|
5
|
+
# Create the new +Options+ object, which provides convenience methods for
|
6
|
+
# accessing values out of an options +Hash+.
|
7
|
+
def initialize(attributes = {})
|
8
|
+
@attributes = attributes
|
9
|
+
end
|
10
|
+
|
11
|
+
# Returns the association name of the options.
|
12
|
+
def name
|
13
|
+
@attributes[:name]
|
14
|
+
end
|
15
|
+
|
16
|
+
# Return a +Class+ for the options. If a class_name was provided, then the
|
17
|
+
# constantized class_name will be returned. If not, a constant based on the
|
18
|
+
# association name will be returned.
|
19
|
+
def klass
|
20
|
+
class_name = @attributes[:class_name]
|
21
|
+
class_name ? class_name.constantize : name.to_s.classify.constantize
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns whether or not this association is polymorphic.
|
25
|
+
def polymorphic
|
26
|
+
@attributes[:polymorphic] == true
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -3,10 +3,10 @@ module Mongoid #:nodoc:
|
|
3
3
|
module Date #:nodoc:
|
4
4
|
module Conversions #:nodoc:
|
5
5
|
def set(value)
|
6
|
-
value.to_time
|
6
|
+
value.to_time unless value.blank?
|
7
7
|
end
|
8
8
|
def get(value)
|
9
|
-
value ? value.to_date : value
|
9
|
+
value ? value.getlocal.to_date : value
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
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.
|
8
|
+
s.version = "0.8.1"
|
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-11-
|
12
|
+
s.date = %q{2009-11-17}
|
13
13
|
s.email = %q{durran@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.textile"
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/mongoid/associations/decorator.rb",
|
29
29
|
"lib/mongoid/associations/has_many.rb",
|
30
30
|
"lib/mongoid/associations/has_one.rb",
|
31
|
+
"lib/mongoid/associations/options.rb",
|
31
32
|
"lib/mongoid/attributes.rb",
|
32
33
|
"lib/mongoid/commands.rb",
|
33
34
|
"lib/mongoid/commands/create.rb",
|
@@ -55,7 +56,6 @@ Gem::Specification.new do |s|
|
|
55
56
|
"lib/mongoid/extensions/symbol/inflections.rb",
|
56
57
|
"lib/mongoid/extensions/time/conversions.rb",
|
57
58
|
"lib/mongoid/field.rb",
|
58
|
-
"lib/mongoid/options.rb",
|
59
59
|
"lib/mongoid/timestamps.rb",
|
60
60
|
"lib/mongoid/versioning.rb",
|
61
61
|
"mongoid.gemspec",
|
@@ -68,6 +68,7 @@ Gem::Specification.new do |s|
|
|
68
68
|
"spec/unit/mongoid/associations/decorator_spec.rb",
|
69
69
|
"spec/unit/mongoid/associations/has_many_spec.rb",
|
70
70
|
"spec/unit/mongoid/associations/has_one_spec.rb",
|
71
|
+
"spec/unit/mongoid/associations/options_spec.rb",
|
71
72
|
"spec/unit/mongoid/associations_spec.rb",
|
72
73
|
"spec/unit/mongoid/attributes_spec.rb",
|
73
74
|
"spec/unit/mongoid/commands/create_spec.rb",
|
@@ -94,7 +95,6 @@ Gem::Specification.new do |s|
|
|
94
95
|
"spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
|
95
96
|
"spec/unit/mongoid/extensions/time/conversions_spec.rb",
|
96
97
|
"spec/unit/mongoid/field_spec.rb",
|
97
|
-
"spec/unit/mongoid/options_spec.rb",
|
98
98
|
"spec/unit/mongoid/timestamps_spec.rb",
|
99
99
|
"spec/unit/mongoid/versioning_spec.rb"
|
100
100
|
]
|
@@ -111,6 +111,7 @@ Gem::Specification.new do |s|
|
|
111
111
|
"spec/unit/mongoid/associations/decorator_spec.rb",
|
112
112
|
"spec/unit/mongoid/associations/has_many_spec.rb",
|
113
113
|
"spec/unit/mongoid/associations/has_one_spec.rb",
|
114
|
+
"spec/unit/mongoid/associations/options_spec.rb",
|
114
115
|
"spec/unit/mongoid/associations_spec.rb",
|
115
116
|
"spec/unit/mongoid/attributes_spec.rb",
|
116
117
|
"spec/unit/mongoid/commands/create_spec.rb",
|
@@ -137,7 +138,6 @@ Gem::Specification.new do |s|
|
|
137
138
|
"spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
|
138
139
|
"spec/unit/mongoid/extensions/time/conversions_spec.rb",
|
139
140
|
"spec/unit/mongoid/field_spec.rb",
|
140
|
-
"spec/unit/mongoid/options_spec.rb",
|
141
141
|
"spec/unit/mongoid/timestamps_spec.rb",
|
142
142
|
"spec/unit/mongoid/versioning_spec.rb"
|
143
143
|
]
|
@@ -150,21 +150,21 @@ Gem::Specification.new do |s|
|
|
150
150
|
s.add_runtime_dependency(%q<durran-validatable>, ["= 1.8.2"])
|
151
151
|
s.add_runtime_dependency(%q<will_paginate>, ["= 2.3.11"])
|
152
152
|
s.add_runtime_dependency(%q<activesupport>, ["= 2.3.4"])
|
153
|
-
s.add_runtime_dependency(%q<mongo>, ["= 0.
|
154
|
-
s.add_runtime_dependency(%q<mongo_ext>, ["= 0.
|
153
|
+
s.add_runtime_dependency(%q<mongo>, ["= 0.17"])
|
154
|
+
s.add_runtime_dependency(%q<mongo_ext>, ["= 0.17"])
|
155
155
|
else
|
156
156
|
s.add_dependency(%q<durran-validatable>, ["= 1.8.2"])
|
157
157
|
s.add_dependency(%q<will_paginate>, ["= 2.3.11"])
|
158
158
|
s.add_dependency(%q<activesupport>, ["= 2.3.4"])
|
159
|
-
s.add_dependency(%q<mongo>, ["= 0.
|
160
|
-
s.add_dependency(%q<mongo_ext>, ["= 0.
|
159
|
+
s.add_dependency(%q<mongo>, ["= 0.17"])
|
160
|
+
s.add_dependency(%q<mongo_ext>, ["= 0.17"])
|
161
161
|
end
|
162
162
|
else
|
163
163
|
s.add_dependency(%q<durran-validatable>, ["= 1.8.2"])
|
164
164
|
s.add_dependency(%q<will_paginate>, ["= 2.3.11"])
|
165
165
|
s.add_dependency(%q<activesupport>, ["= 2.3.4"])
|
166
|
-
s.add_dependency(%q<mongo>, ["= 0.
|
167
|
-
s.add_dependency(%q<mongo_ext>, ["= 0.
|
166
|
+
s.add_dependency(%q<mongo>, ["= 0.17"])
|
167
|
+
s.add_dependency(%q<mongo_ext>, ["= 0.17"])
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
data/spec/spec_helper.rb
CHANGED
@@ -123,3 +123,17 @@ class Game < Mongoid::Document
|
|
123
123
|
field :high_score, :default => 500
|
124
124
|
field :score, :default => 0
|
125
125
|
end
|
126
|
+
|
127
|
+
if RUBY_VERSION == '1.8.6'
|
128
|
+
class Array
|
129
|
+
alias :count :size
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
class Object
|
134
|
+
def tapp
|
135
|
+
tap do
|
136
|
+
puts "#{File.basename caller[2]}: #{self.inspect}"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -12,8 +12,12 @@ describe Mongoid::Associations::Accessor do
|
|
12
12
|
context "when type is has_many" do
|
13
13
|
|
14
14
|
it "returns a HasMany" do
|
15
|
-
@options = Mongoid::Options.new(:
|
16
|
-
association = Mongoid::Associations::Accessor.get(
|
15
|
+
@options = Mongoid::Associations::Options.new(:name => :addresses)
|
16
|
+
association = Mongoid::Associations::Accessor.get(
|
17
|
+
Mongoid::Associations::HasMany,
|
18
|
+
@document,
|
19
|
+
@options
|
20
|
+
)
|
17
21
|
association.should be_a_kind_of(Mongoid::Associations::HasMany)
|
18
22
|
end
|
19
23
|
|
@@ -24,8 +28,12 @@ describe Mongoid::Associations::Accessor do
|
|
24
28
|
context "when document is not nil" do
|
25
29
|
|
26
30
|
it "returns a HasOne" do
|
27
|
-
@options = Mongoid::Options.new(:
|
28
|
-
association = Mongoid::Associations::Accessor.get(
|
31
|
+
@options = Mongoid::Associations::Options.new(:name => :name)
|
32
|
+
association = Mongoid::Associations::Accessor.get(
|
33
|
+
Mongoid::Associations::HasOne,
|
34
|
+
@document,
|
35
|
+
@options
|
36
|
+
)
|
29
37
|
association.should be_a_kind_of(Name)
|
30
38
|
end
|
31
39
|
|
@@ -34,8 +42,12 @@ describe Mongoid::Associations::Accessor do
|
|
34
42
|
context "when document is nil" do
|
35
43
|
|
36
44
|
it "returns nil" do
|
37
|
-
@options = Mongoid::Options.new(:
|
38
|
-
association = Mongoid::Associations::Accessor.get(
|
45
|
+
@options = Mongoid::Associations::Options.new(:name => :name)
|
46
|
+
association = Mongoid::Associations::Accessor.get(
|
47
|
+
Mongoid::Associations::HasOne,
|
48
|
+
nil,
|
49
|
+
@options
|
50
|
+
)
|
39
51
|
association.should be_nil
|
40
52
|
end
|
41
53
|
|
@@ -46,8 +58,12 @@ describe Mongoid::Associations::Accessor do
|
|
46
58
|
context "when type is belongs_to" do
|
47
59
|
|
48
60
|
it "returns a BelongsTo" do
|
49
|
-
@options = Mongoid::Options.new(:
|
50
|
-
association = Mongoid::Associations::Accessor.get(
|
61
|
+
@options = Mongoid::Associations::Options.new(:name => :person)
|
62
|
+
association = Mongoid::Associations::Accessor.get(
|
63
|
+
Mongoid::Associations::BelongsTo,
|
64
|
+
stub(:parent => @document),
|
65
|
+
@options
|
66
|
+
)
|
51
67
|
association.should be_a_kind_of(Person)
|
52
68
|
end
|
53
69
|
|
@@ -60,9 +76,14 @@ describe Mongoid::Associations::Accessor do
|
|
60
76
|
context "when type is has_many" do
|
61
77
|
|
62
78
|
it "returns a HasMany" do
|
63
|
-
@options = Mongoid::Options.new(:
|
79
|
+
@options = Mongoid::Associations::Options.new(:name => :addresses)
|
64
80
|
Mongoid::Associations::HasMany.expects(:update).with(@document, @object, @options)
|
65
|
-
Mongoid::Associations::Accessor.set(
|
81
|
+
Mongoid::Associations::Accessor.set(
|
82
|
+
Mongoid::Associations::HasMany,
|
83
|
+
@document,
|
84
|
+
@object,
|
85
|
+
@options
|
86
|
+
)
|
66
87
|
end
|
67
88
|
|
68
89
|
end
|
@@ -70,9 +91,14 @@ describe Mongoid::Associations::Accessor do
|
|
70
91
|
context "when type is has_one" do
|
71
92
|
|
72
93
|
it "returns a HasOne" do
|
73
|
-
@options = Mongoid::Options.new(:
|
94
|
+
@options = Mongoid::Associations::Options.new(:name => :name)
|
74
95
|
Mongoid::Associations::HasOne.expects(:update).with(@document, @object, @options)
|
75
|
-
Mongoid::Associations::Accessor.set(
|
96
|
+
Mongoid::Associations::Accessor.set(
|
97
|
+
Mongoid::Associations::HasOne,
|
98
|
+
@document,
|
99
|
+
@object,
|
100
|
+
@options
|
101
|
+
)
|
76
102
|
end
|
77
103
|
|
78
104
|
end
|
@@ -80,9 +106,14 @@ describe Mongoid::Associations::Accessor do
|
|
80
106
|
context "when type is belongs_to" do
|
81
107
|
|
82
108
|
it "returns a BelongsTo" do
|
83
|
-
@options = Mongoid::Options.new(:
|
109
|
+
@options = Mongoid::Associations::Options.new(:name => :person)
|
84
110
|
Mongoid::Associations::BelongsTo.expects(:update).with(@object, @document, @options)
|
85
|
-
Mongoid::Associations::Accessor.set(
|
111
|
+
Mongoid::Associations::Accessor.set(
|
112
|
+
Mongoid::Associations::BelongsTo,
|
113
|
+
@document,
|
114
|
+
@object,
|
115
|
+
@options
|
116
|
+
)
|
86
117
|
end
|
87
118
|
|
88
119
|
end
|
@@ -7,7 +7,7 @@ describe Mongoid::Associations::BelongsTo do
|
|
7
7
|
before do
|
8
8
|
@parent = Name.new(:first_name => "Drexel")
|
9
9
|
@document = stub(:parent => @parent)
|
10
|
-
@options = Mongoid::Options.new(:
|
10
|
+
@options = Mongoid::Associations::Options.new(:name => :person)
|
11
11
|
@association = Mongoid::Associations::BelongsTo.new(@document, @options)
|
12
12
|
end
|
13
13
|
|
@@ -27,7 +27,7 @@ describe Mongoid::Associations::BelongsTo do
|
|
27
27
|
before do
|
28
28
|
@parent = Name.new(:first_name => "Drexel")
|
29
29
|
@document = stub(:parent => @parent)
|
30
|
-
@options = Mongoid::Options.new(:
|
30
|
+
@options = Mongoid::Associations::Options.new(:name => :person)
|
31
31
|
@association = Mongoid::Associations::BelongsTo.new(@document, @options)
|
32
32
|
end
|
33
33
|
|
@@ -57,7 +57,7 @@ describe Mongoid::Associations::BelongsTo do
|
|
57
57
|
before do
|
58
58
|
@name = Name.new(:first_name => "Test", :last_name => "User")
|
59
59
|
@person = Person.new(:title => "Mrs")
|
60
|
-
@options = Mongoid::Options.new(:
|
60
|
+
@options = Mongoid::Associations::Options.new(:name => :person)
|
61
61
|
Mongoid::Associations::BelongsTo.update(@person, @name, @options)
|
62
62
|
end
|
63
63
|
|
@@ -14,7 +14,7 @@ describe Mongoid::Associations::HasMany do
|
|
14
14
|
before do
|
15
15
|
@address = Address.new(:street => "Madison Ave")
|
16
16
|
@person = Person.new(:title => "Sir")
|
17
|
-
Mongoid::Associations::HasMany.update([@address], @person, Mongoid::Options.new(:
|
17
|
+
Mongoid::Associations::HasMany.update([@address], @person, Mongoid::Associations::Options.new(:name => :addresses))
|
18
18
|
end
|
19
19
|
|
20
20
|
it "parentizes the child document" do
|
@@ -31,7 +31,7 @@ describe Mongoid::Associations::HasMany do
|
|
31
31
|
describe "#[]" do
|
32
32
|
|
33
33
|
before do
|
34
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
34
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
35
35
|
end
|
36
36
|
|
37
37
|
context "when the index is present in the association" do
|
@@ -56,7 +56,7 @@ describe Mongoid::Associations::HasMany do
|
|
56
56
|
describe "#<<" do
|
57
57
|
|
58
58
|
before do
|
59
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
59
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
60
60
|
@address = Address.new
|
61
61
|
end
|
62
62
|
|
@@ -77,7 +77,7 @@ describe Mongoid::Associations::HasMany do
|
|
77
77
|
describe "#concat" do
|
78
78
|
|
79
79
|
before do
|
80
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
80
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
81
81
|
@address = Address.new
|
82
82
|
end
|
83
83
|
|
@@ -92,7 +92,7 @@ describe Mongoid::Associations::HasMany do
|
|
92
92
|
describe "#push" do
|
93
93
|
|
94
94
|
before do
|
95
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
95
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
96
96
|
@address = Address.new
|
97
97
|
end
|
98
98
|
|
@@ -107,7 +107,7 @@ describe Mongoid::Associations::HasMany do
|
|
107
107
|
describe "#build" do
|
108
108
|
|
109
109
|
before do
|
110
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
110
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
111
111
|
end
|
112
112
|
|
113
113
|
it "adds a new document to the array with the suppied parameters" do
|
@@ -128,7 +128,7 @@ describe Mongoid::Associations::HasMany do
|
|
128
128
|
describe "#find" do
|
129
129
|
|
130
130
|
before do
|
131
|
-
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:
|
131
|
+
@association = Mongoid::Associations::HasMany.new(@document, Mongoid::Associations::Options.new(:name => :addresses))
|
132
132
|
end
|
133
133
|
|
134
134
|
context "when finding all" do
|
@@ -155,7 +155,10 @@ describe Mongoid::Associations::HasMany do
|
|
155
155
|
context "when there are elements in the array" do
|
156
156
|
|
157
157
|
before do
|
158
|
-
@association = Mongoid::Associations::HasMany.new(
|
158
|
+
@association = Mongoid::Associations::HasMany.new(
|
159
|
+
@document,
|
160
|
+
Mongoid::Associations::Options.new(:name => :addresses)
|
161
|
+
)
|
159
162
|
end
|
160
163
|
|
161
164
|
it "returns the first element" do
|
@@ -168,7 +171,10 @@ describe Mongoid::Associations::HasMany do
|
|
168
171
|
context "when the array is empty" do
|
169
172
|
|
170
173
|
before do
|
171
|
-
@association = Mongoid::Associations::HasMany.new(
|
174
|
+
@association = Mongoid::Associations::HasMany.new(
|
175
|
+
Person.new,
|
176
|
+
Mongoid::Associations::Options.new(:name => :addresses)
|
177
|
+
)
|
172
178
|
end
|
173
179
|
|
174
180
|
it "returns nil" do
|
@@ -184,7 +190,10 @@ describe Mongoid::Associations::HasMany do
|
|
184
190
|
context "#length" do
|
185
191
|
|
186
192
|
it "returns the length of the delegated array" do
|
187
|
-
@association = Mongoid::Associations::HasMany.new(
|
193
|
+
@association = Mongoid::Associations::HasMany.new(
|
194
|
+
@document,
|
195
|
+
Mongoid::Associations::Options.new(:name => :addresses)
|
196
|
+
)
|
188
197
|
@association.length.should == 2
|
189
198
|
end
|
190
199
|
|
@@ -195,7 +204,10 @@ describe Mongoid::Associations::HasMany do
|
|
195
204
|
describe "#push" do
|
196
205
|
|
197
206
|
before do
|
198
|
-
@association = Mongoid::Associations::HasMany.new(
|
207
|
+
@association = Mongoid::Associations::HasMany.new(
|
208
|
+
@document,
|
209
|
+
Mongoid::Associations::Options.new(:name => :addresses)
|
210
|
+
)
|
199
211
|
end
|
200
212
|
|
201
213
|
it "appends the document to the end of the array" do
|
@@ -12,7 +12,11 @@ describe Mongoid::Associations::HasOne do
|
|
12
12
|
before do
|
13
13
|
@name = Name.new(:first_name => "Donald")
|
14
14
|
@person = Person.new(:title => "Sir")
|
15
|
-
Mongoid::Associations::HasOne.update(
|
15
|
+
Mongoid::Associations::HasOne.update(
|
16
|
+
@name,
|
17
|
+
@person,
|
18
|
+
Mongoid::Associations::Options.new(:name => :name)
|
19
|
+
)
|
16
20
|
end
|
17
21
|
|
18
22
|
it "parentizes the child document" do
|
@@ -29,7 +33,10 @@ describe Mongoid::Associations::HasOne do
|
|
29
33
|
describe "#decorate!" do
|
30
34
|
|
31
35
|
before do
|
32
|
-
@association = Mongoid::Associations::HasOne.new(
|
36
|
+
@association = Mongoid::Associations::HasOne.new(
|
37
|
+
@document,
|
38
|
+
Mongoid::Associations::Options.new(:name => :mixed_drink)
|
39
|
+
)
|
33
40
|
end
|
34
41
|
|
35
42
|
context "when getting values" do
|
@@ -1,16 +1,16 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "/../../../spec_helper.rb"))
|
2
2
|
|
3
|
-
describe Mongoid::Options do
|
3
|
+
describe Mongoid::Associations::Options do
|
4
4
|
|
5
|
-
describe "#
|
5
|
+
describe "#name" do
|
6
6
|
|
7
7
|
before do
|
8
|
-
@attributes = { :
|
9
|
-
@options = Mongoid::Options.new(@attributes)
|
8
|
+
@attributes = { :name => :addresses }
|
9
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "returns the association name" do
|
13
|
-
@options.
|
13
|
+
@options.name.should == :addresses
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -21,7 +21,7 @@ describe Mongoid::Options do
|
|
21
21
|
|
22
22
|
before do
|
23
23
|
@attributes = { :class_name => "Person" }
|
24
|
-
@options = Mongoid::Options.new(@attributes)
|
24
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "constantizes the class name" do
|
@@ -35,8 +35,8 @@ describe Mongoid::Options do
|
|
35
35
|
context "when association name is singular" do
|
36
36
|
|
37
37
|
before do
|
38
|
-
@attributes = { :
|
39
|
-
@options = Mongoid::Options.new(@attributes)
|
38
|
+
@attributes = { :name => :person }
|
39
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "classifies and constantizes the association name" do
|
@@ -48,8 +48,8 @@ describe Mongoid::Options do
|
|
48
48
|
context "when association name is plural" do
|
49
49
|
|
50
50
|
before do
|
51
|
-
@attributes = { :
|
52
|
-
@options = Mongoid::Options.new(@attributes)
|
51
|
+
@attributes = { :name => :people }
|
52
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
53
53
|
end
|
54
54
|
|
55
55
|
it "classifies and constantizes the association name" do
|
@@ -69,7 +69,7 @@ describe Mongoid::Options do
|
|
69
69
|
|
70
70
|
before do
|
71
71
|
@attributes = { :polymorphic => true }
|
72
|
-
@options = Mongoid::Options.new(@attributes)
|
72
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
73
73
|
|
74
74
|
end
|
75
75
|
|
@@ -82,7 +82,7 @@ describe Mongoid::Options do
|
|
82
82
|
context "when attribute not provided" do
|
83
83
|
|
84
84
|
before do
|
85
|
-
@options = Mongoid::Options.new
|
85
|
+
@options = Mongoid::Associations::Options.new
|
86
86
|
end
|
87
87
|
|
88
88
|
it "returns false" do
|
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.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Durran Jordan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-17 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: "0.
|
53
|
+
version: "0.17"
|
54
54
|
version:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mongo_ext
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - "="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: "0.
|
63
|
+
version: "0.17"
|
64
64
|
version:
|
65
65
|
description:
|
66
66
|
email: durran@gmail.com
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/mongoid/associations/decorator.rb
|
85
85
|
- lib/mongoid/associations/has_many.rb
|
86
86
|
- lib/mongoid/associations/has_one.rb
|
87
|
+
- lib/mongoid/associations/options.rb
|
87
88
|
- lib/mongoid/attributes.rb
|
88
89
|
- lib/mongoid/commands.rb
|
89
90
|
- lib/mongoid/commands/create.rb
|
@@ -111,7 +112,6 @@ files:
|
|
111
112
|
- lib/mongoid/extensions/symbol/inflections.rb
|
112
113
|
- lib/mongoid/extensions/time/conversions.rb
|
113
114
|
- lib/mongoid/field.rb
|
114
|
-
- lib/mongoid/options.rb
|
115
115
|
- lib/mongoid/timestamps.rb
|
116
116
|
- lib/mongoid/versioning.rb
|
117
117
|
- mongoid.gemspec
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- spec/unit/mongoid/associations/decorator_spec.rb
|
125
125
|
- spec/unit/mongoid/associations/has_many_spec.rb
|
126
126
|
- spec/unit/mongoid/associations/has_one_spec.rb
|
127
|
+
- spec/unit/mongoid/associations/options_spec.rb
|
127
128
|
- spec/unit/mongoid/associations_spec.rb
|
128
129
|
- spec/unit/mongoid/attributes_spec.rb
|
129
130
|
- spec/unit/mongoid/commands/create_spec.rb
|
@@ -150,7 +151,6 @@ files:
|
|
150
151
|
- spec/unit/mongoid/extensions/symbol/inflections_spec.rb
|
151
152
|
- spec/unit/mongoid/extensions/time/conversions_spec.rb
|
152
153
|
- spec/unit/mongoid/field_spec.rb
|
153
|
-
- spec/unit/mongoid/options_spec.rb
|
154
154
|
- spec/unit/mongoid/timestamps_spec.rb
|
155
155
|
- spec/unit/mongoid/versioning_spec.rb
|
156
156
|
has_rdoc: true
|
@@ -189,6 +189,7 @@ test_files:
|
|
189
189
|
- spec/unit/mongoid/associations/decorator_spec.rb
|
190
190
|
- spec/unit/mongoid/associations/has_many_spec.rb
|
191
191
|
- spec/unit/mongoid/associations/has_one_spec.rb
|
192
|
+
- spec/unit/mongoid/associations/options_spec.rb
|
192
193
|
- spec/unit/mongoid/associations_spec.rb
|
193
194
|
- spec/unit/mongoid/attributes_spec.rb
|
194
195
|
- spec/unit/mongoid/commands/create_spec.rb
|
@@ -215,6 +216,5 @@ test_files:
|
|
215
216
|
- spec/unit/mongoid/extensions/symbol/inflections_spec.rb
|
216
217
|
- spec/unit/mongoid/extensions/time/conversions_spec.rb
|
217
218
|
- spec/unit/mongoid/field_spec.rb
|
218
|
-
- spec/unit/mongoid/options_spec.rb
|
219
219
|
- spec/unit/mongoid/timestamps_spec.rb
|
220
220
|
- spec/unit/mongoid/versioning_spec.rb
|
data/lib/mongoid/options.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
module Mongoid #:nodoc:
|
2
|
-
class Options #:nodoc:
|
3
|
-
|
4
|
-
# Create the new +Options+ object, which provides convenience methods for
|
5
|
-
# accessing values out of an options +Hash+.
|
6
|
-
def initialize(attributes = {})
|
7
|
-
@attributes = attributes
|
8
|
-
end
|
9
|
-
|
10
|
-
# Returns the association name of the options.
|
11
|
-
def association_name
|
12
|
-
@attributes[:association_name]
|
13
|
-
end
|
14
|
-
|
15
|
-
# Return a +Class+ for the options. If a class_name was provided, then the
|
16
|
-
# constantized class_name will be returned. If not, a constant based on the
|
17
|
-
# association name will be returned.
|
18
|
-
def klass
|
19
|
-
class_name = @attributes[:class_name]
|
20
|
-
association_name = @attributes[:association_name]
|
21
|
-
class_name ? class_name.constantize : association_name.to_s.classify.constantize
|
22
|
-
end
|
23
|
-
|
24
|
-
# Returns whether or not this association is polymorphic.
|
25
|
-
def polymorphic
|
26
|
-
@attributes[:polymorphic] == true
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|