has_eav 1.1.2 → 1.1.4
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/Gemfile +2 -2
- data/Gemfile.lock +2 -2
- data/VERSION +1 -1
- data/has_eav.gemspec +14 -15
- data/lib/has_eav.rb +10 -16
- data/test/test_has_eav.rb +1 -1
- metadata +31 -35
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem "activerecord", "~> 3.0
|
3
|
+
gem "activerecord", "~> 3.0"
|
4
4
|
|
5
5
|
# Add dependencies to develop your gem here.
|
6
6
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -9,6 +9,6 @@ group :development do
|
|
9
9
|
gem "bundler", "~> 1.0.0"
|
10
10
|
gem "jeweler", "~> 1.5.1"
|
11
11
|
gem "rcov", ">= 0"
|
12
|
-
gem "rails", "~> 3.0
|
12
|
+
gem "rails", "~> 3.0"
|
13
13
|
gem "sqlite3-ruby", :require => "sqlite3"
|
14
14
|
end
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.4
|
data/has_eav.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.1.
|
7
|
+
s.name = "has_eav"
|
8
|
+
s.version = "1.1.4"
|
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"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2011-09-13"
|
13
|
+
s.description = "Put EAV behaviour on your ActiveRecord models"
|
14
|
+
s.email = "hcdm@matchvertise.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.rdoc"
|
@@ -65,11 +65,11 @@ Gem::Specification.new do |s|
|
|
65
65
|
"test/test/unit/product_test.rb",
|
66
66
|
"test/test_has_eav.rb"
|
67
67
|
]
|
68
|
-
s.homepage =
|
68
|
+
s.homepage = "http://github.com/coffeeaddict/has_eav"
|
69
69
|
s.licenses = ["MIT"]
|
70
70
|
s.require_paths = ["lib"]
|
71
|
-
s.rubygems_version =
|
72
|
-
s.summary =
|
71
|
+
s.rubygems_version = "1.8.10"
|
72
|
+
s.summary = "Put EAV behaviour on your ActiveRecord models"
|
73
73
|
s.test_files = [
|
74
74
|
"test/app/models/post.rb",
|
75
75
|
"test/app/models/post_attribute.rb",
|
@@ -102,33 +102,32 @@ Gem::Specification.new do |s|
|
|
102
102
|
]
|
103
103
|
|
104
104
|
if s.respond_to? :specification_version then
|
105
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
106
105
|
s.specification_version = 3
|
107
106
|
|
108
107
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
109
|
-
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0
|
108
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
|
110
109
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
111
110
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
112
111
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
|
113
112
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
114
|
-
s.add_development_dependency(%q<rails>, ["~> 3.0
|
113
|
+
s.add_development_dependency(%q<rails>, ["~> 3.0"])
|
115
114
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
116
115
|
else
|
117
|
-
s.add_dependency(%q<activerecord>, ["~> 3.0
|
116
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
118
117
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
119
118
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
120
119
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
121
120
|
s.add_dependency(%q<rcov>, [">= 0"])
|
122
|
-
s.add_dependency(%q<rails>, ["~> 3.0
|
121
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
123
122
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
124
123
|
end
|
125
124
|
else
|
126
|
-
s.add_dependency(%q<activerecord>, ["~> 3.0
|
125
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
127
126
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
128
127
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
129
128
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
130
129
|
s.add_dependency(%q<rcov>, [">= 0"])
|
131
|
-
s.add_dependency(%q<rails>, ["~> 3.0
|
130
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
132
131
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
133
132
|
end
|
134
133
|
end
|
data/lib/has_eav.rb
CHANGED
@@ -21,7 +21,7 @@ module ActiveRecord
|
|
21
21
|
# end
|
22
22
|
#
|
23
23
|
# # specify some eav_attributes at class level
|
24
|
-
# has_eav :through =>
|
24
|
+
# has_eav :through => "BoundAttribute" do
|
25
25
|
# eav_attribute :remote_ip
|
26
26
|
# eav_attribute :uniq_id
|
27
27
|
# end
|
@@ -32,16 +32,20 @@ module ActiveRecord
|
|
32
32
|
#
|
33
33
|
def has_eav opts={}, &block
|
34
34
|
klass = opts.delete :through
|
35
|
+
klass = klass.to_s if klass.is_a? Symbol
|
36
|
+
klass = klass.camelize
|
37
|
+
|
35
38
|
raise(
|
36
|
-
|
37
|
-
|
39
|
+
"Eav Class cannot be nil. Specify a class using " +
|
40
|
+
"has_eav :through => :class"
|
38
41
|
) if klass.blank?
|
39
42
|
|
40
43
|
class_eval do
|
44
|
+
has_many :eav_attributes, :class_name => klass
|
41
45
|
after_save :save_eav_attributes
|
42
46
|
end
|
43
47
|
|
44
|
-
@eav_class = klass.
|
48
|
+
@eav_class = klass.constantize
|
45
49
|
@eav_attributes = {}
|
46
50
|
|
47
51
|
yield if block_given?
|
@@ -154,17 +158,6 @@ module ActiveRecord
|
|
154
158
|
end
|
155
159
|
end
|
156
160
|
|
157
|
-
# get all the eav attribute instances available for this model instance
|
158
|
-
#
|
159
|
-
# eg: if you model says 'has_eav :through => :post_attribute' these are
|
160
|
-
# all PostAttribute's
|
161
|
-
#
|
162
|
-
def eav_attributes
|
163
|
-
@eav_attributes ||= eav_class.all(
|
164
|
-
:conditions => { self_key => self.id }
|
165
|
-
)
|
166
|
-
end
|
167
|
-
|
168
161
|
# save the list of eav_attribute back to the database
|
169
162
|
def save_eav_attributes # :nodoc:
|
170
163
|
eav_attributes.select { |a| a.changed? }.each do |a|
|
@@ -236,6 +229,7 @@ module ActiveRecord
|
|
236
229
|
# for date/time classes [eg: Date.parse("2011-03-20")]
|
237
230
|
eval("#{attributes[attribute]}.parse('#{value}')")
|
238
231
|
rescue
|
232
|
+
# nothing worked, falling back to whatever the ORM supplied
|
239
233
|
value
|
240
234
|
end
|
241
235
|
|
@@ -251,4 +245,4 @@ module ActiveRecord
|
|
251
245
|
end # /ActiveRecord
|
252
246
|
|
253
247
|
# insert the has_eav method into ActiveRecord
|
254
|
-
ActiveRecord::Base.send( :include, ActiveRecord::ActsAs::HasEav )
|
248
|
+
ActiveRecord::Base.send( :include, ActiveRecord::ActsAs::HasEav )
|
data/test/test_has_eav.rb
CHANGED
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 4
|
10
|
+
version: 1.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Hartog C. de Mik
|
@@ -15,27 +15,25 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-09-13 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
21
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
22
|
none: false
|
24
23
|
requirements:
|
25
24
|
- - ~>
|
26
25
|
- !ruby/object:Gem::Version
|
27
|
-
hash:
|
26
|
+
hash: 7
|
28
27
|
segments:
|
29
28
|
- 3
|
30
29
|
- 0
|
31
|
-
|
32
|
-
version: 3.0.3
|
33
|
-
requirement: *id001
|
34
|
-
prerelease: false
|
30
|
+
version: "3.0"
|
35
31
|
type: :runtime
|
36
32
|
name: activerecord
|
33
|
+
version_requirements: *id001
|
34
|
+
prerelease: false
|
37
35
|
- !ruby/object:Gem::Dependency
|
38
|
-
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
37
|
none: false
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
@@ -44,12 +42,12 @@ dependencies:
|
|
44
42
|
segments:
|
45
43
|
- 0
|
46
44
|
version: "0"
|
47
|
-
requirement: *id002
|
48
|
-
prerelease: false
|
49
45
|
type: :development
|
50
46
|
name: shoulda
|
47
|
+
version_requirements: *id002
|
48
|
+
prerelease: false
|
51
49
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
52
|
requirements:
|
55
53
|
- - ~>
|
@@ -60,12 +58,12 @@ dependencies:
|
|
60
58
|
- 0
|
61
59
|
- 0
|
62
60
|
version: 1.0.0
|
63
|
-
requirement: *id003
|
64
|
-
prerelease: false
|
65
61
|
type: :development
|
66
62
|
name: bundler
|
63
|
+
version_requirements: *id003
|
64
|
+
prerelease: false
|
67
65
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
67
|
none: false
|
70
68
|
requirements:
|
71
69
|
- - ~>
|
@@ -76,12 +74,12 @@ dependencies:
|
|
76
74
|
- 5
|
77
75
|
- 1
|
78
76
|
version: 1.5.1
|
79
|
-
requirement: *id004
|
80
|
-
prerelease: false
|
81
77
|
type: :development
|
82
78
|
name: jeweler
|
79
|
+
version_requirements: *id004
|
80
|
+
prerelease: false
|
83
81
|
- !ruby/object:Gem::Dependency
|
84
|
-
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
83
|
none: false
|
86
84
|
requirements:
|
87
85
|
- - ">="
|
@@ -90,28 +88,27 @@ dependencies:
|
|
90
88
|
segments:
|
91
89
|
- 0
|
92
90
|
version: "0"
|
93
|
-
requirement: *id005
|
94
|
-
prerelease: false
|
95
91
|
type: :development
|
96
92
|
name: rcov
|
93
|
+
version_requirements: *id005
|
94
|
+
prerelease: false
|
97
95
|
- !ruby/object:Gem::Dependency
|
98
|
-
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
97
|
none: false
|
100
98
|
requirements:
|
101
99
|
- - ~>
|
102
100
|
- !ruby/object:Gem::Version
|
103
|
-
hash:
|
101
|
+
hash: 7
|
104
102
|
segments:
|
105
103
|
- 3
|
106
104
|
- 0
|
107
|
-
|
108
|
-
version: 3.0.3
|
109
|
-
requirement: *id006
|
110
|
-
prerelease: false
|
105
|
+
version: "3.0"
|
111
106
|
type: :development
|
112
107
|
name: rails
|
108
|
+
version_requirements: *id006
|
109
|
+
prerelease: false
|
113
110
|
- !ruby/object:Gem::Dependency
|
114
|
-
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
115
112
|
none: false
|
116
113
|
requirements:
|
117
114
|
- - ">="
|
@@ -120,10 +117,10 @@ dependencies:
|
|
120
117
|
segments:
|
121
118
|
- 0
|
122
119
|
version: "0"
|
123
|
-
requirement: *id007
|
124
|
-
prerelease: false
|
125
120
|
type: :development
|
126
121
|
name: sqlite3-ruby
|
122
|
+
version_requirements: *id007
|
123
|
+
prerelease: false
|
127
124
|
description: Put EAV behaviour on your ActiveRecord models
|
128
125
|
email: hcdm@matchvertise.com
|
129
126
|
executables: []
|
@@ -181,7 +178,6 @@ files:
|
|
181
178
|
- test/test/unit/product_attribute_test.rb
|
182
179
|
- test/test/unit/product_test.rb
|
183
180
|
- test/test_has_eav.rb
|
184
|
-
has_rdoc: true
|
185
181
|
homepage: http://github.com/coffeeaddict/has_eav
|
186
182
|
licenses:
|
187
183
|
- MIT
|
@@ -211,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
207
|
requirements: []
|
212
208
|
|
213
209
|
rubyforge_project:
|
214
|
-
rubygems_version: 1.
|
210
|
+
rubygems_version: 1.8.10
|
215
211
|
signing_key:
|
216
212
|
specification_version: 3
|
217
213
|
summary: Put EAV behaviour on your ActiveRecord models
|