diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 2a9a7c2042..4d117fd79b 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* to_xml: correct naming of included associations. #5831 [josh.starcher@gmail.com] + * Pushing a record onto a has_many :through sets the association's foreign key to the associate's primary key and adds it to the correct association. #5815, #5829 [josh@hasmanythrough.com] * PostgreSQL: simplify index introspection query. #5819 [stephen_purcell@yahoo.com] diff --git a/activerecord/lib/active_record/xml_serialization.rb b/activerecord/lib/active_record/xml_serialization.rb index 5324ae5a0a..2e4a038886 100644 --- a/activerecord/lib/active_record/xml_serialization.rb +++ b/activerecord/lib/active_record/xml_serialization.rb @@ -190,7 +190,7 @@ def add_includes tag = tag.dasherize if dasherize? builder.tag!(tag) do - records.each { |r| r.to_xml(opts) } + records.each { |r| r.to_xml(opts.merge(:root => association.to_s.singularize)) } end end when :has_one, :belongs_to diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index f52253dd8b..8fe57c35b9 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -1319,6 +1319,11 @@ def test_to_xml_including_has_many_association assert xml.include?(%()) assert xml.include?(%(The Second Topic's of the day)) end + + def test_array_to_xml_including_has_many_association + xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :include => :replies) + assert xml.include?(%()) + end def test_array_to_xml_including_has_one_association xml = [ companies(:first_firm), companies(:rails_core) ].to_xml(:indent => 0, :skip_instruct => true, :include => :account)