diff options
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/xml_serialization.rb | 2 | ||||
-rwxr-xr-x | activerecord/test/base_test.rb | 2 | ||||
-rw-r--r-- | activerecord/test/xml_serialization_test.rb | 23 |
4 files changed, 21 insertions, 8 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 9b1ac32f23..bf3a893e7f 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Base#to_xml supports serialized attributes. #7502 [jonathan] + * Base.update_all :order and :limit options. Useful for MySQL updates that must be ordered to avoid violating unique constraints. [Jeremy Kemper] * Remove deprecated object transactions. People relying on this functionality should install the object_transactions plugin at http://code.bitsweat.net/svn/object_transactions. Closes #5637 [Koz, Jeremy Kemper] diff --git a/activerecord/lib/active_record/xml_serialization.rb b/activerecord/lib/active_record/xml_serialization.rb index 7a8167534d..ff7720d786 100644 --- a/activerecord/lib/active_record/xml_serialization.rb +++ b/activerecord/lib/active_record/xml_serialization.rb @@ -275,7 +275,7 @@ module ActiveRecord #:nodoc: protected def compute_type - type = @record.class.columns_hash[name].type + type = @record.class.serialized_attributes.has_key?(name) ? :yaml : @record.class.columns_hash[name].type case type when :text diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index c3ae9a08b9..7f629a91f4 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -1509,7 +1509,7 @@ class BasicsTest < Test::Unit::TestCase assert xml.include?(%(<id type="integer">1</id>)) assert xml.include?(%(<replies-count type="integer">1</replies-count>)) assert xml.include?(%(<written-on type="datetime">#{written_on_in_current_timezone}</written-on>)) - assert xml.include?(%(<content>Have a nice day</content>)) + assert xml.include?(%(<content type="yaml">--- Have a nice day\n</content>)) assert xml.include?(%(<author-email-address>david@loudthinking.com</author-email-address>)) assert xml.match(%(<parent-id type="integer"></parent-id>)) if current_adapter?(:SybaseAdapter, :SQLServerAdapter, :OracleAdapter) diff --git a/activerecord/test/xml_serialization_test.rb b/activerecord/test/xml_serialization_test.rb index 73ff354c48..61da81fe2d 100644 --- a/activerecord/test/xml_serialization_test.rb +++ b/activerecord/test/xml_serialization_test.rb @@ -9,11 +9,14 @@ class Contact < ActiveRecord::Base columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null) end - column :name, :string - column :age, :integer - column :avatar, :binary - column :created_at, :datetime - column :awesome, :boolean + column :name, :string + column :age, :integer + column :avatar, :binary + column :created_at, :datetime + column :awesome, :boolean + column :preferences, :string + + serialize :preferences end class XmlSerializationTest < Test::Unit::TestCase @@ -57,7 +60,7 @@ end class DefaultXmlSerializationTest < Test::Unit::TestCase def setup - @xml = Contact.new(:name => 'aaron stack', :age => 25, :avatar => 'binarydata', :created_at => Time.utc(2006, 8, 1), :awesome => false).to_xml + @xml = Contact.new(:name => 'aaron stack', :age => 25, :avatar => 'binarydata', :created_at => Time.utc(2006, 8, 1), :awesome => false, :preferences => { :gem => 'ruby' }).to_xml end def test_should_serialize_string @@ -81,6 +84,10 @@ class DefaultXmlSerializationTest < Test::Unit::TestCase def test_should_serialize_boolean assert_match %r{<awesome type=\"boolean\">false</awesome>}, @xml end + + def test_should_serialize_yaml + assert_match %r{<preferences type=\"yaml\">--- \n:gem: ruby\n</preferences>}, @xml + end end class NilXmlSerializationTest < Test::Unit::TestCase @@ -109,6 +116,10 @@ class NilXmlSerializationTest < Test::Unit::TestCase def test_should_serialize_boolean assert_match %r{<awesome type=\"boolean\"></awesome>}, @xml end + + def test_should_serialize_yaml + assert_match %r{<preferences type=\"yaml\"></preferences>}, @xml + end end class DatabaseConnectedXmlSerializationTest < Test::Unit::TestCase |