diff options
author | Denis Odorcic <denis.odorcic@jadedpixel.com> | 2011-09-16 11:04:12 -0400 |
---|---|---|
committer | Denis Odorcic <denis.odorcic@jadedpixel.com> | 2011-09-16 11:16:17 -0400 |
commit | b09b2a8401c18d1efff21b3919ac280470a6eb8b (patch) | |
tree | c07cf546770d1fbc3dbf8864d9a0888a3453ab50 /activeresource/lib | |
parent | d5bf12aca61a1c8673bbe04bde23b34d0e5aea39 (diff) | |
download | rails-b09b2a8401c18d1efff21b3919ac280470a6eb8b.tar.gz rails-b09b2a8401c18d1efff21b3919ac280470a6eb8b.tar.bz2 rails-b09b2a8401c18d1efff21b3919ac280470a6eb8b.zip |
Fix ActiveResource JSON error parser and incorrect tests
Diffstat (limited to 'activeresource/lib')
-rw-r--r-- | activeresource/lib/active_resource/validations.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/activeresource/lib/active_resource/validations.rb b/activeresource/lib/active_resource/validations.rb index ca265d053e..264c5fed8c 100644 --- a/activeresource/lib/active_resource/validations.rb +++ b/activeresource/lib/active_resource/validations.rb @@ -25,10 +25,24 @@ module ActiveResource end end + def from_hash(messages, save_cache = false) + clear unless save_cache + + messages.each do |(key,errors)| + errors.each do |error| + if @base.attributes.keys.include?(key) + add key, error + else + self[:base] << "#{key.humanize} #{error}" + end + end + end + end + # Grabs errors from a json response. def from_json(json, save_cache = false) - array = Array.wrap(ActiveSupport::JSON.decode(json)['errors']) rescue [] - from_array array, save_cache + hash = ActiveSupport::JSON.decode(json)['errors'] || {} rescue {} + from_hash hash, save_cache end # Grabs errors from an XML response. |