Class: ActiveResource::Errors

Inherits:
ActiveModel::Errors show all
Defined in:
activeresource/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.

Constant Summary

Constants inherited from ActiveModel::Errors

ActiveModel::Errors::CALLBACKS_OPTIONS

Instance Attribute Summary

Attributes inherited from ActiveModel::Errors

#messages

Instance Method Summary collapse

Methods inherited from ActiveModel::Errors

#[], #[]=, #add, #add_on_blank, #add_on_empty, #as_json, #clear, #count, #each, #empty?, #full_messages, #generate_message, #get, #include?, #initialize, #keys, #set, #size, #to_a, #to_hash, #to_xml, #values

Methods included from Enumerable

#as_json, #each_with_object, #exclude?, #group_by, #index_by, #many?, #sum

Constructor Details

This class inherits a constructor from ActiveModel::Errors

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).



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'activeresource/lib/active_resource/validations.rb', line 14

def from_array(messages, save_cache = false)
  clear unless save_cache
  humanized_attributes = Hash[@base.attributes.keys.map { |attr_name| [attr_name.humanize, attr_name] }]
  messages.each do |message|
    attr_message = humanized_attributes.keys.detect do |attr_name|
      if message[0, attr_name.size + 1] == "#{attr_name} "
        add humanized_attributes[attr_name], message[(attr_name.size + 1)..-1]
      end
    end

    self[:base] << message if attr_message.nil?
  end
end

#from_json(json, save_cache = false) ⇒ Object

Grabs errors from a json response.



29
30
31
32
# File 'activeresource/lib/active_resource/validations.rb', line 29

def from_json(json, save_cache = false)
  array = Array.wrap(ActiveSupport::JSON.decode(json)['errors']) rescue []
  from_array array, save_cache
end

#from_xml(xml, save_cache = false) ⇒ Object

Grabs errors from an XML response.



35
36
37
38
# File 'activeresource/lib/active_resource/validations.rb', line 35

def from_xml(xml, save_cache = false)
  array = Array.wrap(Hash.from_xml(xml)['errors']['error']) rescue []
  from_array array, save_cache
end