enumerated_field 0.0.4 → 0.1.0

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.
@@ -1,3 +1,6 @@
1
+ require "active_model"
2
+ require "active_support/hash_with_indifferent_access"
3
+
1
4
  module EnumeratedField
2
5
 
3
6
  def self.included(klass)
@@ -10,7 +13,7 @@ module EnumeratedField
10
13
  # field_name typically corresponds to the database column name
11
14
  # values_array is a double array (not a hash to preserve order for when order matters.. ie select options)
12
15
  def enum_field(field_name, values_array, options = {})
13
- values_hash = {}
16
+ values_hash = ActiveSupport::HashWithIndifferentAccess.new
14
17
  values_array.each { |value, key| values_hash[key] = value }
15
18
  default_options = {
16
19
  :validate => true,
@@ -37,8 +40,12 @@ module EnumeratedField
37
40
 
38
41
  unless options[:validate] == false
39
42
  valid_values = values_hash.keys
40
- valid_values += values_hash.keys.map do |key|
41
- key.is_a?(String) ? key.to_sym : key.to_s
43
+ values_hash.keys.map do |key|
44
+ if key.is_a?(String) and not key.blank?
45
+ valid_values << key.to_sym
46
+ else
47
+ valid_values << key.to_s
48
+ end
42
49
  end
43
50
  validates field_name, :inclusion => valid_values,
44
51
  :allow_nil => options[:allow_nil], :allow_blank => options[:allow_blank]
@@ -71,7 +78,7 @@ module EnumeratedField
71
78
  # ex. object.league_nfl? which returns true if the objects league
72
79
  # field is currently set to nfl otherwise false
73
80
  values_hash.keys.each do |key|
74
- define_method("#{field_name}_#{key}?") { send(field_name) == key }
81
+ define_method("#{field_name}_#{key}?") { send(field_name).to_s == key.to_s }
75
82
  end
76
83
 
77
84
  end
@@ -1,3 +1,3 @@
1
1
  module EnumeratedField
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -55,8 +55,8 @@ class EnumeratedFieldTest < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  should 'create contstants for the field keys' do
58
- assert_equal :chiquita, Banana::BRAND_CHIQUITA
59
- assert_equal :delmonte, Banana::BRAND_DELMONTE
58
+ assert_equal "chiquita", Banana::BRAND_CHIQUITA
59
+ assert_equal "delmonte", Banana::BRAND_DELMONTE
60
60
  end
61
61
 
62
62
  should 'create underscored constants from field keys which contain invalid constant name characters' do
@@ -79,6 +79,7 @@ class EnumeratedFieldTest < Test::Unit::TestCase
79
79
 
80
80
  should 'show Green for color_display of green' do
81
81
  assert_equal @red_apple.color_display_for(:green), 'Green'
82
+ assert_equal @red_apple.color_display_for('green'), 'Green'
82
83
  end
83
84
 
84
85
  should 'have two enum fields in one class' do
data/test/test_helper.rb CHANGED
@@ -2,4 +2,3 @@ require 'test/unit'
2
2
  require 'turn'
3
3
  require 'shoulda'
4
4
  require 'lib/enumerated_field'
5
- require "active_model"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enumerated_field
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 4
10
- version: 0.0.4
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Luke Ludwig