Class: ActiveResource::Errors
- Inherits:
-
ActiveModel::Errors
- Object
- ActiveModel::Errors
- ActiveResource::Errors
- Defined in:
- lib/active_resource/validations.rb
Overview
Active Resource validation is reported to and from this object, which is used by Base#save to determine whether the object in a valid state to be saved. See usage example in Validations.
Instance Method Summary collapse
-
#from_array(messages, save_cache = false) ⇒ Object
Grabs errors from an array of messages (like ActiveRecord::Validations).
-
#from_hash(messages, save_cache = false) ⇒ Object
Grabs errors from a hash of attribute => array of errors elements The second parameter directs the errors cache to be cleared (default) or not (by passing true).
-
#from_json(json, save_cache = false) ⇒ Object
Grabs errors from a json response.
-
#from_xml(xml, save_cache = false) ⇒ Object
Grabs errors from an XML response.
Instance Method Details
#from_array(messages, save_cache = false) ⇒ Object
Grabs errors from an array of messages (like ActiveRecord::Validations). The second parameter directs the errors cache to be cleared (default) or not (by passing true).
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/active_resource/validations.rb', line 16 def from_array(, save_cache = false) clear unless save_cache humanized_attributes = Hash[@base.known_attributes.map { |attr_name| [attr_name.humanize, attr_name] }] .each do || = humanized_attributes.keys.sort_by { |a| -a.length }.detect do |attr_name| if [0, attr_name.size + 1] == "#{attr_name} " add humanized_attributes[attr_name], [(attr_name.size + 1)..-1] end end add(:base, ) if .nil? end end |
#from_hash(messages, save_cache = false) ⇒ Object
Grabs errors from a hash of attribute => array of errors elements The second parameter directs the errors cache to be cleared (default) or not (by passing true)
Unrecognized attribute names will be humanized and added to the record’s base errors.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/active_resource/validations.rb', line 35 def from_hash(, save_cache = false) clear unless save_cache .each do |(key, errors)| errors.each do |error| if @base.known_attributes.include?(key) add key, error elsif key == "base" add(:base, error) else # reporting an error on an attribute not in attributes # format and add them to base add(:base, "#{key.humanize} #{error}") end end end end |
#from_json(json, save_cache = false) ⇒ Object
Grabs errors from a json response.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/active_resource/validations.rb', line 54 def from_json(json, save_cache = false) decoded = ActiveSupport::JSON.decode(json) || {} rescue {} if decoded.kind_of?(Hash) && (decoded.has_key?("errors") || decoded.empty?) errors = decoded["errors"] || {} if errors.kind_of?(Array) # 3.2.1-style with array of strings ActiveResource.deprecator.warn("Returning errors as an array of strings is deprecated.") from_array errors, save_cache else # 3.2.2+ style from_hash errors, save_cache end else # <3.2-style respond_with - lacks 'errors' key ActiveResource.deprecator.warn('Returning errors as a hash without a root "errors" key is deprecated.') from_hash decoded, save_cache end end |
#from_xml(xml, save_cache = false) ⇒ Object
Grabs errors from an XML response.
74 75 76 77 |
# File 'lib/active_resource/validations.rb', line 74 def from_xml(xml, save_cache = false) array = Array.wrap(Hash.from_xml(xml)["errors"]["error"]) rescue [] from_array array, save_cache end |