diff --git a/lib/sequel_enum.rb b/lib/sequel_enum.rb index d19c438..7f7ddbb 100644 --- a/lib/sequel_enum.rb +++ b/lib/sequel_enum.rb @@ -12,14 +12,18 @@ def enums def enum(column, values) if values.is_a? Hash - values.each do |key,val| + values.each do |key, val| raise ArgumentError, "index should be a symbol, #{key} provided which it's a #{key.class}" unless key.is_a? Symbol - raise ArgumentError, "value should be an integer, #{val} provided which it's a #{val.class}" unless val.is_a? Integer + + if !val.is_a?(Integer) || !val.is_a?(String) + raise ArgumentError, "value should be an integer or string, #{val} provided which it's a #{val.class}" + end end + elsif values.is_a? Array values = Hash[values.map.with_index { |v, i| [v, i] }] else - raise ArgumentError, "#enum expects the second argument to be an array of symbols or a hash like { :symbol => integer }" + raise ArgumentError, "#enum expects the second argument to be an array of symbols or a hash like { :symbol => integer|string }" end define_method "#{column}=" do |value| @@ -30,7 +34,7 @@ def enum(column, values) self.class.enums[column].rassoc(self[column])&.first end - values.each do |key, value| + values.each do |key, _| define_method "#{key}?" do self.send(column) == key end