classy_enum 3.4.0 → 3.5.0.beta

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