json_errors.rb 671 B

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