Class: ActiveResource::Errors

Inherits:
ActiveModel::Errors
  • Object
show all
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

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 'lib/active_resource/validations.rb', line 14

def from_array(messages, save_cache = false)
  clear unless save_cache
  humanized_attributes = @base.attributes.keys.inject({}) { |h, attr_name| h.update(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 '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 '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