Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions lib/sequel_enum.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand All @@ -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
Expand Down