method

assert_valid_enum_definition_values

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