json_errors.rb 723 B

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