classy_enum 3.4.0 → 3.5.0.beta

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0edf622ed777a5bba8d7bd326cabf8ff8668e4c2
4
- data.tar.gz: 030e7d4db73ee839162bea545e9c6410a87edea9
3
+ metadata.gz: e52f5ea1617ac0e9a89994cfab27f12faec5d1ce
4
+ data.tar.gz: 37e5e8fac14f20a572df511fa7403f031b0b93c7
5
5
  SHA512:
6
- metadata.gz: c4afa5c866b4cf3fa6729c1025ba5a5d34b2b9afadcce1819fefafd5be89cce916598427c4bc3b85f4df11a6d786480419b6886c5d27e2bcc80904820c0a28e0
7
- data.tar.gz: 9b4810bf50ee3a76121dd18e617d0309cabc986487161b2e3431742b54ad2a97ace3eae56f62b25b49f5ebdb9e002854a1488e34ddf4ebe94c214745a86aebe4
6
+ metadata.gz: e60ebb8312ab9245e951785798023ad5b21583da87382b5f0da025e08757deb7626ef7c5f2248e72f9d44aaf2f90fe0731092ff82e617122bcdd7386f6aa0dfc
7
+ data.tar.gz: 79ede4de8ff0e03de2e41fe9f77ad4e5fcc35fea0db19af23ccd92915d692df10d50d1458a98dfea13e9298fd0d38560ecedf776e73dc1962e3da9c5c133bc01
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
3
  - 1.9.3
5
4
  - 2.0.0
5
+ - 2.1.1
6
6
  gemfile:
7
7
  - gemfiles/Gemfile.rails-3.0.x
8
8
  - gemfiles/Gemfile.rails-3.1.x
@@ -11,4 +11,4 @@ gemfile:
11
11
  matrix:
12
12
  exclude:
13
13
  - rvm: 1.8.7
14
- gemfile: gemfiles/Gemfile.rails-4.0.x
14
+ gemfile: gemfiles/Gemfile.rails-4.0.x
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # ClassyEnum Changelog
2
2
 
3
+ ## 3.5.0
4
+
5
+ * Fixes long standing issue with default values not being persisted to
6
+ the database. See issue #37.
7
+
3
8
  ## 3.4.0
4
9
 
5
10
  * Removes full Rails gem dependency in favor of ActiveRecord
data/classy_enum.gemspec CHANGED
@@ -20,6 +20,5 @@ Gem::Specification.new do |gem|
20
20
  gem.add_development_dependency('rspec', '>= 2.11')
21
21
  gem.add_development_dependency('sqlite3', '>= 1.3')
22
22
  gem.add_development_dependency('json', '>= 1.6')
23
- gem.add_development_dependency('debugger')
24
23
 
25
24
  end
@@ -67,10 +67,7 @@ module ClassyEnum
67
67
 
68
68
  # Define getter method that returns a ClassyEnum instance
69
69
  define_method attribute do
70
- value = read_attribute(attribute)
71
- value ||= default unless allow_nil
72
-
73
- enum.build(value,
70
+ enum.build(read_attribute(attribute),
74
71
  :owner => self,
75
72
  :serialize_as_json => serialize_as_json,
76
73
  :allow_blank => (allow_blank || allow_nil)
@@ -82,6 +79,20 @@ module ClassyEnum
82
79
  value = ClassyEnum._normalize_value(value, default, (allow_nil || allow_blank))
83
80
  super(value)
84
81
  end
82
+
83
+ # Initialize the object with the default value if it is present
84
+ # because this will let you store the default value in the
85
+ # database and make it searchable.
86
+ if default.present?
87
+ after_initialize do
88
+ value = read_attribute(attribute)
89
+
90
+ if (value.blank? && !(allow_blank || allow_nil)) || (value.nil? && !allow_nil)
91
+ send("#{attribute}=", default)
92
+ end
93
+ end
94
+ end
95
+
85
96
  end
86
97
 
87
98
  end
@@ -1,3 +1,3 @@
1
1
  module ClassyEnum
2
- VERSION = "3.4.0"
2
+ VERSION = "3.5.0.beta"
3
3
  end
@@ -226,15 +226,20 @@ describe DefaultCat do
226
226
  persian.breed_color { should eql('white Persian') }
227
227
  end
228
228
 
229
+ it 'persists the default, when set to nil' do
230
+ cat = DefaultCat.create(:breed => :abyssian)
231
+ expect(DefaultCat.where(:other_breed => 'persian')).to include(cat)
232
+ end
233
+
229
234
  it 'uses the default if explictly set to nil and does not allow nil' do
230
235
  abyssian.update_attributes!(:other_breed => nil)
231
- DefaultCat.where(:other_breed => nil).count.should be_zero
236
+ DefaultCat.where(:other_breed => 'persian').should include(abyssian)
232
237
  DefaultCat.last.other_breed.should == 'persian'
233
238
  end
234
239
 
235
240
  it 'uses the default if explictly set to blank and does not allow blank' do
236
241
  abyssian.update_attributes!(:other_breed => '')
237
- DefaultCat.where(:other_breed => '').count.should be_zero
242
+ DefaultCat.where(:other_breed => 'persian').should include(abyssian)
238
243
  DefaultCat.last.other_breed.should == 'persian'
239
244
  end
240
245
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: classy_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Brown
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-13 00:00:00.000000000 Z
11
+ date: 2014-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.6'
69
- - !ruby/object:Gem::Dependency
70
- name: debugger
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  description: A utility that adds class based enum functionality to ActiveRecord attributes
84
70
  email:
85
71
  - github@lette.us
@@ -138,12 +124,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
124
  version: '0'
139
125
  required_rubygems_version: !ruby/object:Gem::Requirement
140
126
  requirements:
141
- - - ">="
127
+ - - ">"
142
128
  - !ruby/object:Gem::Version
143
- version: '0'
129
+ version: 1.3.1
144
130
  requirements: []
145
131
  rubyforge_project:
146
- rubygems_version: 2.2.1
132
+ rubygems_version: 2.2.2
147
133
  signing_key:
148
134
  specification_version: 4
149
135
  summary: A class based enumerator utility for Ruby on Rails