Class: CarvoyantAPI::Errors
- Inherits:
-
ActiveResource::Errors
- Object
- ActiveResource::Errors
- CarvoyantAPI::Errors
- Defined in:
- lib/carvoyant_api/errors.rb
Overview
CarvoyantAPI Validation Errors are returned in a specific format. By default ActiveResource is unable to parse API errors correctly. ActiveResource from_json and from_hash methods need to be overridden to correctly parse errors returned by CarvoyantAPI
Instance Method Summary collapse
- #from_hash(messages, save_cache = false) ⇒ Object
- #from_json(json, save_cache = false) ⇒ Object
-
#full_message(attribute, message) ⇒ Object
CarvoyantAPI returns error messages which have attribute name in the message.
Instance Method Details
#from_hash(messages, save_cache = false) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/carvoyant_api/errors.rb', line 11 def from_hash(, save_cache = false) unless save_cache clear end if ['fieldErrors'] ['fieldErrors'].each do |field_error| key = field_error['fieldName'] error = field_error['errorDisplay'] if @base.known_attributes.include?(key) add key, error elsif key == 'base' self[:base] << error else # Errors that might have an unknown key should be added to base self[:base] << "#{key.humanize} #{error}" end end elsif ['errorDisplay'] self[:base] << ['errorDisplay'] else self[:base] << 'An unknown error has occured.' end end |
#from_json(json, save_cache = false) ⇒ Object
5 6 7 8 9 |
# File 'lib/carvoyant_api/errors.rb', line 5 def from_json(json, save_cache = false) decoded = ActiveSupport::JSON.decode(json) || {} rescue {} errors = decoded['error'] || decoded from_hash errors, save_cache end |
#full_message(attribute, message) ⇒ Object
CarvoyantAPI returns error messages which have attribute name in the message. For example: “The deviceId is in use by another vehicle.” Overrides ActiveModel::Errors method
39 40 41 42 43 44 45 |
# File 'lib/carvoyant_api/errors.rb', line 39 def (attribute, ) I18n.t(:"carvoyant_errors.format", { default: '%{message}', message: , attribute: attribute }) end |