has_eav 1.0.0 → 1.0.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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
data/has_eav.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{has_eav}
8
- s.version = "1.0.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Hartog C. de Mik"]
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "test/app/models/post_attribute.rb",
32
32
  "test/app/models/product.rb",
33
33
  "test/app/models/product_attribute.rb",
34
+ "test/app/models/special_post.rb",
34
35
  "test/config.ru",
35
36
  "test/config/application.rb",
36
37
  "test/config/boot.rb",
@@ -50,6 +51,7 @@ Gem::Specification.new do |s|
50
51
  "test/db/migrate/20101210100309_create_post_attributes.rb",
51
52
  "test/db/migrate/20101210102322_create_products.rb",
52
53
  "test/db/migrate/20101210102347_create_product_attributes.rb",
54
+ "test/db/migrate/20101210125857_add_type_to_post.rb",
53
55
  "test/helper.rb",
54
56
  "test/log/development.log",
55
57
  "test/script/rails",
@@ -73,6 +75,7 @@ Gem::Specification.new do |s|
73
75
  "test/app/models/post_attribute.rb",
74
76
  "test/app/models/product.rb",
75
77
  "test/app/models/product_attribute.rb",
78
+ "test/app/models/special_post.rb",
76
79
  "test/config/application.rb",
77
80
  "test/config/boot.rb",
78
81
  "test/config/environment.rb",
@@ -89,6 +92,7 @@ Gem::Specification.new do |s|
89
92
  "test/db/migrate/20101210100309_create_post_attributes.rb",
90
93
  "test/db/migrate/20101210102322_create_products.rb",
91
94
  "test/db/migrate/20101210102347_create_product_attributes.rb",
95
+ "test/db/migrate/20101210125857_add_type_to_post.rb",
92
96
  "test/helper.rb",
93
97
  "test/test/unit/post_attribute_test.rb",
94
98
  "test/test/unit/post_test.rb",
data/lib/has_eav.rb CHANGED
@@ -56,14 +56,18 @@ module ActiveRecord
56
56
  self.class_eav_attributes[name] = type
57
57
  end
58
58
 
59
- # class accessor
59
+ # class accessor - when the superclass != AR::Base asume we are in STI
60
+ # mode
60
61
  def class_eav_attributes # :nodoc:
61
- @eav_attributes
62
+ superclass != ActiveRecord::Base ?
63
+ superclass.class_eav_attributes :
64
+ @eav_attributes
62
65
  end
63
66
 
64
- # class accessor
67
+ # class accessor - when the superclass != AR::Base asume we are in STI
68
+ # mode
65
69
  def eav_class # :nodoc:
66
- @eav_class
70
+ superclass != ActiveRecord::Base ? superclass.eav_class : @eav_class
67
71
  end
68
72
  end # /ClassMethods
69
73
 
@@ -188,7 +192,12 @@ module ActiveRecord
188
192
 
189
193
  # get the key to my <3
190
194
  def self_key # :nodoc:
191
- "#{self.class.name.underscore}_id".to_sym
195
+ klass = self.class
196
+ if klass.superclass != ActiveRecord::Base
197
+ klass = klass.superclass
198
+ end
199
+
200
+ "#{klass.name.underscore}_id".to_sym
192
201
  end
193
202
 
194
203
  # cast an eav value to it's desired class
@@ -0,0 +1,2 @@
1
+ class SpecialPost < Post
2
+ end
@@ -0,0 +1,9 @@
1
+ class AddTypeToPost < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :posts, :type, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :posts, :type
8
+ end
9
+ end
data/test/test_has_eav.rb CHANGED
@@ -87,4 +87,10 @@ class TestHasEav < Test::Unit::TestCase
87
87
 
88
88
  assert_equal "failed", post, "has failed"
89
89
  end
90
+
91
+ should "work with STI" do
92
+ p = SpecialPost.create(
93
+ :title => "title", :contents => "lorem ipsum", :author_name => "hartog"
94
+ )
95
+ end
90
96
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_eav
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 0
10
- version: 1.0.0
9
+ - 1
10
+ version: 1.0.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Hartog C. de Mik
@@ -148,6 +148,7 @@ files:
148
148
  - test/app/models/post_attribute.rb
149
149
  - test/app/models/product.rb
150
150
  - test/app/models/product_attribute.rb
151
+ - test/app/models/special_post.rb
151
152
  - test/config.ru
152
153
  - test/config/application.rb
153
154
  - test/config/boot.rb
@@ -167,6 +168,7 @@ files:
167
168
  - test/db/migrate/20101210100309_create_post_attributes.rb
168
169
  - test/db/migrate/20101210102322_create_products.rb
169
170
  - test/db/migrate/20101210102347_create_product_attributes.rb
171
+ - test/db/migrate/20101210125857_add_type_to_post.rb
170
172
  - test/helper.rb
171
173
  - test/log/development.log
172
174
  - test/script/rails
@@ -218,6 +220,7 @@ test_files:
218
220
  - test/app/models/post_attribute.rb
219
221
  - test/app/models/product.rb
220
222
  - test/app/models/product_attribute.rb
223
+ - test/app/models/special_post.rb
221
224
  - test/config/application.rb
222
225
  - test/config/boot.rb
223
226
  - test/config/environment.rb
@@ -234,6 +237,7 @@ test_files:
234
237
  - test/db/migrate/20101210100309_create_post_attributes.rb
235
238
  - test/db/migrate/20101210102322_create_products.rb
236
239
  - test/db/migrate/20101210102347_create_product_attributes.rb
240
+ - test/db/migrate/20101210125857_add_type_to_post.rb
237
241
  - test/helper.rb
238
242
  - test/test/unit/post_attribute_test.rb
239
243
  - test/test/unit/post_test.rb