datacite/volpino

View on GitHub
app/controllers/concerns/error_serializable.rb

Summary

Maintainability
A
1 hr
Test Coverage
A
100%
# frozen_string_literal: true

module ErrorSerializable
  extend ActiveSupport::Concern

  included do
    def serialize_errors(errors, options = {})
      return nil if errors.nil?

      errors_arr = []

      errors.each do |err|
        unless errors_arr.any? { |e| e[:source] == err.attribute }
          new_err = { source: err.attribute, title: capitalize_error_message(err) }
          new_err[:uid] = options[:uid] if options[:uid].present?
          errors_arr << new_err
        end
      end

      { errors: errors_arr }.to_json
    end
  end

  private
    def capitalize_error_message(error)
      error.message.sub(/^./, &:upcase)
    end
end