Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@dmitry
Created March 30, 2010 16:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmitry/349278 to your computer and use it in GitHub Desktop.
Save dmitry/349278 to your computer and use it in GitHub Desktop.
diff --git a/lib/simple_enum.rb b/lib/simple_enum.rb
index 9c1fa3f..68792a1 100644
--- a/lib/simple_enum.rb
+++ b/lib/simple_enum.rb
@@ -165,8 +165,8 @@ module SimpleEnum
# generate setter
define_method("#{enum_cd}=") do |new_value|
- v = new_value.nil? ? nil : values[new_value.to_sym]
- raise(ArgumentError, "Invalid enumeration value: #{new_value}") if (options[:whiny] and v.nil? and !new_value.nil?)
+ v = new_value.blank? ? nil : values[new_value.to_sym]
+ raise(ArgumentError, "Invalid enumeration value: #{new_value}") if (options[:whiny] and v.nil? and !new_value.blank?)
write_attribute options[:column], v
end
diff --git a/test/simple_enum_test.rb b/test/simple_enum_test.rb
index 6aed8c2..83bc4dc 100644
--- a/test/simple_enum_test.rb
+++ b/test/simple_enum_test.rb
@@ -77,6 +77,8 @@ class SimpleEnumTest < ActiveSupport::TestCase
d = not_whiny.new :gender => :foo
assert_nil(d.gender)
+ d.gender = ''
+ assert_nil(d.gender)
end
test "ensure that setting to 'nil' works if :whiny => true and :whiny => false" do
@@ -84,6 +86,8 @@ class SimpleEnumTest < ActiveSupport::TestCase
assert_equal(:male, d.gender)
d.gender = nil
assert_nil(d.gender)
+ d.gender = ''
+ assert_nil(d.gender)
not_whiny_again = Class.new(Dummy) do
as_enum :gender, [:male, :female], :whiny => false
@@ -92,6 +96,8 @@ class SimpleEnumTest < ActiveSupport::TestCase
d = not_whiny_again.new :gender => :male
assert_equal(:male, d.gender)
d.gender = nil
- assert_nil(d.gender)
+ assert_nil(d.gender)
+ d.gender = ''
+ assert_nil(d.gender)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment