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 CHANGED
@@ -1,6 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "activerecord", "~> 3.0.3"
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.3"
12
+ gem "rails", "~> 3.0"
13
13
  gem "sqlite3-ruby", :require => "sqlite3"
14
14
  end
data/Gemfile.lock CHANGED
@@ -76,10 +76,10 @@ PLATFORMS
76
76
  ruby
77
77
 
78
78
  DEPENDENCIES
79
- activerecord (~> 3.0.3)
79
+ activerecord (~> 3.0)
80
80
  bundler (~> 1.0.0)
81
81
  jeweler (~> 1.5.1)
82
- rails (~> 3.0.3)
82
+ rails (~> 3.0)
83
83
  rcov
84
84
  shoulda
85
85
  sqlite3-ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
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 = %q{has_eav}
8
- s.version = "1.1.2"
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 = %q{2011-06-01}
13
- s.description = %q{Put EAV behaviour on your ActiveRecord models}
14
- s.email = %q{hcdm@matchvertise.com}
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 = %q{http://github.com/coffeeaddict/has_eav}
68
+ s.homepage = "http://github.com/coffeeaddict/has_eav"
69
69
  s.licenses = ["MIT"]
70
70
  s.require_paths = ["lib"]
71
- s.rubygems_version = %q{1.3.7}
72
- s.summary = %q{Put EAV behaviour on your ActiveRecord models}
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.3"])
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.3"])
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.3"])
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.3"])
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.3"])
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.3"])
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 => :x_attributes do
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
- "Eav Class cannot be nil. Specify a class using " +
37
- "has_eav :through => :class"
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.to_s.camelize.constantize
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
@@ -114,7 +114,7 @@ class TestHasEav < Test::Unit::TestCase
114
114
  end
115
115
 
116
116
  should "not create attributes with nil value" do
117
- p = Post.last
117
+ p = Post.create
118
118
  p.author_name = nil
119
119
 
120
120
  assert_equal [], p.eav_attributes, "No attributes where defined"
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
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 2
10
- version: 1.1.2
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-06-01 00:00:00 +02:00
19
- default_executable:
18
+ date: 2011-09-13 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ requirement: &id001 !ruby/object:Gem::Requirement
23
22
  none: false
24
23
  requirements:
25
24
  - - ~>
26
25
  - !ruby/object:Gem::Version
27
- hash: 1
26
+ hash: 7
28
27
  segments:
29
28
  - 3
30
29
  - 0
31
- - 3
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
- version_requirements: &id002 !ruby/object:Gem::Requirement
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
- version_requirements: &id003 !ruby/object:Gem::Requirement
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
- version_requirements: &id004 !ruby/object:Gem::Requirement
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
- version_requirements: &id005 !ruby/object:Gem::Requirement
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
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
99
97
  none: false
100
98
  requirements:
101
99
  - - ~>
102
100
  - !ruby/object:Gem::Version
103
- hash: 1
101
+ hash: 7
104
102
  segments:
105
103
  - 3
106
104
  - 0
107
- - 3
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
- version_requirements: &id007 !ruby/object:Gem::Requirement
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.3.7
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