active_hash 0.9.9 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module ActiveHash
2
2
  module Gem
3
- VERSION = "0.9.9"
3
+ VERSION = "0.9.10"
4
4
  end
5
5
  end
@@ -50,6 +50,22 @@ module ActiveHash
50
50
  end
51
51
  end
52
52
 
53
+ def has_one(association_id, options = {})
54
+ define_method(association_id) do
55
+ options = {
56
+ :class_name => association_id.to_s.classify,
57
+ :foreign_key => self.class.to_s.foreign_key
58
+ }.merge(options)
59
+
60
+ scope = options[:class_name].constantize
61
+
62
+ if scope.respond_to?(:scoped) && options[:conditions]
63
+ scope = scope.scoped(:conditions => options[:conditions])
64
+ end
65
+ scope.send("find_by_#{options[:foreign_key]}", id)
66
+ end
67
+ end
68
+
53
69
  def belongs_to(association_id, options = {})
54
70
 
55
71
  options = {
@@ -209,7 +209,43 @@ describe ActiveHash::Base, "associations" do
209
209
  author.city_id.should == @city.id
210
210
  end
211
211
  end
212
+ end
213
+
214
+ describe "#has_one" do
215
+ context "with ActiveRecord children" do
216
+ before do
217
+ Author.has_one :book
218
+ end
219
+
220
+ it "find the correct records" do
221
+ book = Book.create! :author_id => 1, :published => true
222
+ author = Author.create :id => 1
223
+ author.book.should == book
224
+ end
225
+
226
+ it "returns nil when there is no record" do
227
+ author = Author.create :id => 1
228
+ author.book.should be_nil
229
+ end
230
+ end
212
231
 
232
+ context "with ActiveHash children" do
233
+ before do
234
+ City.has_one :author
235
+ Author.field :city_id
236
+ end
237
+
238
+ it "find the correct records" do
239
+ city = City.create :id => 1
240
+ author = Author.create :city_id => 1
241
+ city.author.should == author
242
+ end
243
+
244
+ it "returns nil when there are no records" do
245
+ city = City.create :id => 1
246
+ city.author.should be_nil
247
+ end
248
+ end
213
249
  end
214
250
 
215
251
  describe "#marked_for_destruction?" do
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_hash
3
3
  version: !ruby/object:Gem::Version
4
- hash: 41
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 9
9
- - 9
10
- version: 0.9.9
8
+ - 10
9
+ version: 0.9.10
11
10
  platform: ruby
12
11
  authors:
13
12
  - Jeff Dean
@@ -31,7 +30,8 @@ autorequire:
31
30
  bindir: bin
32
31
  cert_chain: []
33
32
 
34
- date: 2012-01-18 00:00:00 Z
33
+ date: 2012-01-18 00:00:00 -05:00
34
+ default_executable:
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
@@ -41,7 +41,6 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- hash: 3
45
44
  segments:
46
45
  - 2
47
46
  - 2
@@ -57,7 +56,6 @@ dependencies:
57
56
  requirements:
58
57
  - - ~>
59
58
  - !ruby/object:Gem::Version
60
- hash: 7
61
59
  segments:
62
60
  - 2
63
61
  - 2
@@ -73,7 +71,6 @@ dependencies:
73
71
  requirements:
74
72
  - - ">="
75
73
  - !ruby/object:Gem::Version
76
- hash: 3
77
74
  segments:
78
75
  - 0
79
76
  version: "0"
@@ -87,7 +84,6 @@ dependencies:
87
84
  requirements:
88
85
  - - ">="
89
86
  - !ruby/object:Gem::Version
90
- hash: 3
91
87
  segments:
92
88
  - 2
93
89
  - 2
@@ -103,7 +99,6 @@ dependencies:
103
99
  requirements:
104
100
  - - ">="
105
101
  - !ruby/object:Gem::Version
106
- hash: 3
107
102
  segments:
108
103
  - 0
109
104
  version: "0"
@@ -124,12 +119,12 @@ files:
124
119
  - README.md
125
120
  - active_hash.gemspec
126
121
  - lib/active_file/base.rb
127
- - lib/active_hash/base.rb
128
- - lib/active_hash/version.rb
129
- - lib/active_hash.rb
130
122
  - lib/active_yaml/base.rb
131
123
  - lib/associations/associations.rb
124
+ - lib/active_hash.rb
132
125
  - lib/enum/enum.rb
126
+ - lib/active_hash/version.rb
127
+ - lib/active_hash/base.rb
133
128
  - Gemfile
134
129
  - spec/active_file/base_spec.rb
135
130
  - spec/active_hash/base_spec.rb
@@ -138,6 +133,7 @@ files:
138
133
  - spec/enum/enum_spec.rb
139
134
  - spec/lint_spec.rb
140
135
  - spec/spec_helper.rb
136
+ has_rdoc: true
141
137
  homepage: http://github.com/zilkey/active_hash
142
138
  licenses: []
143
139
 
@@ -151,7 +147,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
147
  requirements:
152
148
  - - ">="
153
149
  - !ruby/object:Gem::Version
154
- hash: 3
155
150
  segments:
156
151
  - 0
157
152
  version: "0"
@@ -160,14 +155,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
155
  requirements:
161
156
  - - ">="
162
157
  - !ruby/object:Gem::Version
163
- hash: 3
164
158
  segments:
165
159
  - 0
166
160
  version: "0"
167
161
  requirements: []
168
162
 
169
163
  rubyforge_project:
170
- rubygems_version: 1.8.17
164
+ rubygems_version: 1.3.7
171
165
  signing_key:
172
166
  specification_version: 3
173
167
  summary: An ActiveRecord-like model that uses a hash or file as a datasource