lib/restly/base/instance/error_handling.rb in restly-0.0.1.beta.3 vs lib/restly/base/instance/error_handling.rb in restly-0.0.1.beta.4

- old
+ new

@@ -1,8 +1,16 @@ module Restly::Base::Instance::ErrorHandling extend ActiveSupport::Concern + def append_error(field, error) + self.errors.add field.to_sym, error + if /(?<association>\w+)\.(?<attr>.+)/ =~ field && respond_to_association?(association) + instance_eval(&association.to_sym).append_error(attr, error) + end + + end + private def response_has_errors?(response=self.response) @response.status >= 400 || (parsed_response(response).is_a?(Hash) && @@ -18,24 +26,26 @@ when Hash response_errors.each do |name, error| case error when Array - error.each { |e| self.errors.add(name.to_sym, e) } + error.each { |e| append_error name, e } when String - self.errors.add(name.to_sym, error) + append_error name, error end + end when Array - response_errors.each do |error| - self.errors.add(:base, error) - end + response_errors.each { |error| append_error :base, error } when String - self.errors.add(:base, response_errors) + append_error :base, response_errors + + when NilClass + append_error :base, connection.status_string(response.status) end self.errors end \ No newline at end of file