Here’s a method that will allow you to call to_xml on an ActiveRecord::Errors object. We’re using this to pass errors between web apps via a web service api.
class ActiveRecord::Errors
def to_xml(options = {})
options[:indent] ||= 2
options.reverse_merge!({ :builder =>
Builder::XmlMarkup.new(:indent =>
options[:indent]), :root => "errors" })
options[:builder].instruct! unless options.delete(:skip_instruct)
options[:builder].__send__(options[:root].to_s.dasherize) do |xml|
@errors.each do |key, value|
xml.__send__(key.to_s.dasherize) do |xm|
for message in value
xm.message(message)
end
end
end
end
end
end