diff options
author | Jamis Buck <jamis@37signals.com> | 2006-04-21 17:04:00 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-04-21 17:04:00 +0000 |
commit | 010a10f3a115602a40c6ad4b502f1158c9d40161 (patch) | |
tree | d0c31bca8d6db8f67458bbe811a3685908e78aed /activerecord | |
parent | 1f80f540a7618e0d9c853319f6488e25ac201b2c (diff) | |
download | rails-010a10f3a115602a40c6ad4b502f1158c9d40161.tar.gz rails-010a10f3a115602a40c6ad4b502f1158c9d40161.tar.bz2 rails-010a10f3a115602a40c6ad4b502f1158c9d40161.zip |
Add ActiveRecord::Errors#to_xml
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4243 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/validations.rb | 12 | ||||
-rwxr-xr-x | activerecord/test/validations_test.rb | 9 |
3 files changed, 23 insertions, 0 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index a8141cd9d7..dd5dbdc71c 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Add ActiveRecord::Errors#to_xml [Jamis Buck] + * Properly quote index names in migrations (closes #4764) [John Long] * Fix the HasManyAssociation#count method so it uses the new ActiveRecord::Base#count syntax, while maintaining backwards compatibility. [Rick] diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb index d31b53b941..9e58599f81 100755 --- a/activerecord/lib/active_record/validations.rb +++ b/activerecord/lib/active_record/validations.rb @@ -156,6 +156,18 @@ module ActiveRecord alias_method :count, :size alias_method :length, :size + + # Return an XML representation of this error object. + def to_xml(options={}) + options[:root] ||= "errors" + options[:indent] ||= 2 + options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent]) + + options[:builder].instruct! unless options.delete(:skip_instruct) + options[:builder].errors do |e| + full_messages.each { |msg| e.error(msg) } + end + end end diff --git a/activerecord/test/validations_test.rb b/activerecord/test/validations_test.rb index b73058a64b..6ef455459b 100755 --- a/activerecord/test/validations_test.rb +++ b/activerecord/test/validations_test.rb @@ -995,6 +995,15 @@ class ValidationsTest < Test::Unit::TestCase r.topic = Topic.find :first assert r.valid? end + + def test_errors_to_xml + r = Reply.new :title => "Wrong Create" + assert !r.valid? + xml = r.errors.to_xml(:skip_instruct => true) + assert_equal "<errors>", xml.first(8) + assert xml.include?("<error>Title is Wrong Create</error>") + assert xml.include?("<error>Content Empty</error>") + end end |