Ver Fonte

handle plain errors like they are constantly used on shopify, closes #103

Peter Schröder há 11 anos atrás
pai
commit
7ba634e361

+ 13 - 3
lib/active_resource/json_errors.rb

@@ -12,10 +12,20 @@ module ActiveResource
       end
     end
 
-    # Grabs errors from a json response.
+    def from_string(error, save_cache = false)
+      clear unless save_cache
+
+      add("message", error)
+    end
+
     def from_json(json, save_cache = false)
-      hash = ActiveSupport::JSON.decode(json)['errors'] || {} rescue {}
-      from_hash hash, save_cache
+      data = ActiveSupport::JSON.decode(json)['errors'] || {} rescue {}
+      case data
+      when String
+        from_string(data, save_cache)
+      else
+        from_hash data, save_cache
+      end
     end
   end
 end

+ 5 - 0
test/active_resource/json_errors_test.rb

@@ -8,6 +8,11 @@ module ActiveResource
       assert_equal({"name"=>["missing"]}, errors)
     end
 
+    def test_parsing_of_error_json_plain_string
+      errors = some_error.from_json({errors: 'some generic error'}.to_json)
+      assert_equal(["some generic error"], errors)
+    end
+
     private
 
     def some_error