From c4cb2dd01410417b5ab027aff5d472d68d9cbdb1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 3 Dec 2007 01:47:21 +0000 Subject: Fixed that to_xml should not automatically pass :procs to associations included with :include (closes #10162) [chuyeow] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8258 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../lib/active_record/serializers/xml_serializer.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'activerecord/lib/active_record/serializers/xml_serializer.rb') diff --git a/activerecord/lib/active_record/serializers/xml_serializer.rb b/activerecord/lib/active_record/serializers/xml_serializer.rb index 693060f06e..84b1a53470 100644 --- a/activerecord/lib/active_record/serializers/xml_serializer.rb +++ b/activerecord/lib/active_record/serializers/xml_serializer.rb @@ -1,12 +1,12 @@ module ActiveRecord #:nodoc: module Serialization # Builds an XML document to represent the model. Some configuration is - # available through +options+, however more complicated cases should + # available through +options+, however more complicated cases should # override ActiveRecord's to_xml. # - # By default the generated XML document will include the processing + # By default the generated XML document will include the processing # instruction and all object's attributes. For example: - # + # # # # The First Topic @@ -42,7 +42,7 @@ module ActiveRecord #:nodoc: # # 2004-04-15 # - # + # # To include first level associations use :include # # firm.to_xml :include => [ :account, :clients ] @@ -189,8 +189,8 @@ module ActiveRecord #:nodoc: def add_tag(attribute) builder.tag!( - dasherize? ? attribute.name.dasherize : attribute.name, - attribute.value.to_s, + dasherize? ? attribute.name.dasherize : attribute.name, + attribute.value.to_s, attribute.decorations(!options[:skip_types]) ) end @@ -204,9 +204,9 @@ module ActiveRecord #:nodoc: else builder.tag!(tag, :type => :array) do association_name = association.to_s.singularize - records.each do |record| + records.each do |record| record.to_xml opts.merge( - :root => association_name, + :root => association_name, :type => (record.class.to_s.underscore == association_name ? nil : record.class.name) ) end @@ -231,7 +231,9 @@ module ActiveRecord #:nodoc: builder.tag!(*args) do add_attributes + procs = options.delete(:procs) add_includes { |association, records, opts| add_associations(association, records, opts) } + options[:procs] = procs add_procs yield builder if block_given? end -- cgit v1.2.3