json_errors.rb 672 B

12345678910111213141516171819202122232425262728293031
  1. require 'active_resource/base'
  2. module ActiveResource
  3. class Errors < ActiveModel::Errors
  4. def from_json(json, save_cache = false)
  5. data = ActiveSupport::JSON.decode(json)['errors'] || {} rescue {}
  6. case data
  7. when String
  8. from_string(data, save_cache)
  9. else
  10. from_hash(data, save_cache)
  11. end
  12. end
  13. def from_hash(messages, save_cache = false)
  14. clear unless save_cache
  15. messages.each do |key,errors|
  16. errors.each do |error|
  17. add(key, error)
  18. end
  19. end
  20. end
  21. def from_string(error, save_cache = false)
  22. clear unless save_cache
  23. add("message", error)
  24. end
  25. end
  26. end