has_eav 1.1.2 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
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