method
assert_valid_enum_definition_values
v8.1.1 -
Show latest stable
- Class:
ActiveRecord::Enum
assert_valid_enum_definition_values(values)private
No documentation available.
# File activerecord/lib/active_record/enum.rb, line 335
def assert_valid_enum_definition_values(values)
case values
when Hash
if values.empty?
raise ArgumentError, "Enum values #{values} must not be empty."
end
if values.keys.any?(&:blank?)
raise ArgumentError, "Enum values #{values} must not contain a blank name."
end
values = values.transform_values do |value|
value.is_a?(Symbol) ? value.name : value
end
values.each_value do |value|
case value
when String, Integer, true, false, nil
# noop
else
raise ArgumentError, "Enum values #{values} must be only booleans, integers, symbols or strings, got: #{value.class}"
end
end
when Array
if values.empty?
raise ArgumentError, "Enum values #{values} must not be empty."
end
unless values.all?(Symbol) || values.all?(String)
raise ArgumentError, "Enum values #{values} must only contain symbols or strings."
end
if values.any?(&:blank?)
raise ArgumentError, "Enum values #{values} must not contain a blank name."
end
else
raise ArgumentError, "Enum values #{values} must be either a non-empty hash or an array."
end
values
end