diff options
author | Lawrence Pit <lawrence.pit@gmail.com> | 2010-04-30 10:39:52 +1000 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-04-30 14:22:57 +0200 |
commit | 60504e62c8e2f5e137a0ac82aed67a6c0fe42447 (patch) | |
tree | 2aad838d8b81c73c7b3c47d39310a6f4b8aead41 /activerecord | |
parent | a003a39bac204b6b2d6425fa3c10891a0cf0149a (diff) | |
download | rails-60504e62c8e2f5e137a0ac82aed67a6c0fe42447.tar.gz rails-60504e62c8e2f5e137a0ac82aed67a6c0fe42447.tar.bz2 rails-60504e62c8e2f5e137a0ac82aed67a6c0fe42447.zip |
to_xml with :include should skip_instruct on the included records [#4506 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/serializers/xml_serializer.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/serialization_test.rb | 7 | ||||
-rw-r--r-- | activerecord/test/models/contact.rb | 4 |
3 files changed, 11 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/serializers/xml_serializer.rb b/activerecord/lib/active_record/serializers/xml_serializer.rb index ed5964d923..b2d4a48945 100644 --- a/activerecord/lib/active_record/serializers/xml_serializer.rb +++ b/activerecord/lib/active_record/serializers/xml_serializer.rb @@ -197,7 +197,7 @@ module ActiveRecord #:nodoc: # TODO This can likely be cleaned up to simple use ActiveSupport::XmlMini.to_tag as well. def add_associations(association, records, opts) association_name = association.to_s.singularize - merged_options = options.merge(opts).merge!(:root => association_name) + merged_options = options.merge(opts).merge!(:root => association_name, :skip_instruct => true) if records.is_a?(Enumerable) tag = ActiveSupport::XmlMini.rename_key(association.to_s, options) diff --git a/activerecord/test/cases/serialization_test.rb b/activerecord/test/cases/serialization_test.rb index 8841694271..8c385af97c 100644 --- a/activerecord/test/cases/serialization_test.rb +++ b/activerecord/test/cases/serialization_test.rb @@ -44,4 +44,11 @@ class SerializationTest < ActiveRecord::TestCase assert_equal @contact_attributes[:awesome], contact.awesome, "For #{format}" end end + + def test_serialize_should_xml_skip_instruct_for_included_records + @contact.alternative = Contact.new(:name => 'Copa Cabana') + @serialized = @contact.to_xml(:include => [ :alternative ]) + assert_equal @serialized.index('<?xml '), 0 + assert_nil @serialized.index('<?xml ', 1) + end end diff --git a/activerecord/test/models/contact.rb b/activerecord/test/models/contact.rb index dbfa57bf49..975a885331 100644 --- a/activerecord/test/models/contact.rb +++ b/activerecord/test/models/contact.rb @@ -13,4 +13,6 @@ class Contact < ActiveRecord::Base column :preferences, :string serialize :preferences -end
\ No newline at end of file + + belongs_to :alternative, :class_name => 'Contact' +end |