aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/lib
diff options
context:
space:
mode:
authorDenis Odorcic <denis.odorcic@jadedpixel.com>2011-09-16 11:04:12 -0400
committerDenis Odorcic <denis.odorcic@jadedpixel.com>2011-09-16 11:16:17 -0400
commitb09b2a8401c18d1efff21b3919ac280470a6eb8b (patch)
treec07cf546770d1fbc3dbf8864d9a0888a3453ab50 /activeresource/lib
parentd5bf12aca61a1c8673bbe04bde23b34d0e5aea39 (diff)
downloadrails-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.rb18
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.