Sha256: 1ff85b6a7da19c8844a8d5de5f9533cb4a4581e634b588482a3800fadace2ddf

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

require "active_model"

# ApiClient::Errors provide extra functionality to ActiveModel::Errors.
class ApiClient::Errors < ActiveModel::Errors
  # Add serveral errors from a hash to the object.
  #
  # @return [ApiClient::Errors] The Error object.
  def add_errors(errors = {})
    errors.each_pair do |key, value|
      add(key, value)
    end
  end

  # Returns a unique message for each array of error messages in a hash.
  #
  #   class Person
  #     validates_presence_of :name, :address, :email
  #     validates_length_of :name, in: 5..30
  #   end
  #
  #   person = Person.create(address: '123 First St.')
  #   person.errors.unique_messages
  #   # => { :name => "is too short (minimum is 5 characters) and can't be blank", :address => nil, :email => "can't be blank" }
  def unique_messages
    errors = {}
    map { |attribute, messages| errors[attribute] = unique_message(attribute) }
    errors
  end

  # Returns a unique message for a given attribute.
  #
  #   class Person
  #     validates_presence_of :name, :address, :email
  #     validates_length_of :name, in: 5..30
  #   end
  #
  #   person = Person.create(address: '123 First St.')
  #   person.errors.unique_message(:name) # => "is too short (minimum is 5 characters) and can't be blank"
  #   person.errors.unique_message(:address) # => nil
  def unique_message(attribute)
    return '' if messages[attribute].blank?
    [messages[attribute]].flatten.to_sentence
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
api-client-2.0.0.rc1 lib/api-client/errors.rb
api-client-1.10.0 lib/api-client/errors.rb
api-client-1.9.1 lib/api-client/errors.rb
api-client-1.9.0 lib/api-client/errors.rb
api-client-1.8.2 lib/api-client/errors.rb
api-client-1.8.1 lib/api-client/errors.rb
api-client-1.8.0 lib/api-client/errors.rb
api-client-1.7.1 lib/api-client/errors.rb
api-client-1.7.0 lib/api-client/errors.rb
api-client-1.6.1 lib/api-client/errors.rb
api-client-1.6.0 lib/api-client/errors.rb
api-client-1.5.4 lib/api-client/errors.rb