aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorJoshua Wehner <joshua.wehner@gmail.com>2011-03-03 15:43:42 -0500
committerJoshua Wehner <joshua.wehner@gmail.com>2011-05-10 12:06:09 -0400
commit2cef2d411a20b89b71fb76876c33b331f94d0cc5 (patch)
treebe87688daa4b431f01e1e05051fa764408341bfc /activemodel
parent8e55afb453beb8f98d647ae97619101b19b7f911 (diff)
downloadrails-2cef2d411a20b89b71fb76876c33b331f94d0cc5.tar.gz
rails-2cef2d411a20b89b71fb76876c33b331f94d0cc5.tar.bz2
rails-2cef2d411a20b89b71fb76876c33b331f94d0cc5.zip
Methods that return nil should not be considered YAML
Diffstat (limited to 'activemodel')
-rw-r--r--activemodel/lib/active_model/serializers/xml.rb1
-rw-r--r--activemodel/test/cases/serializers/xml_serialization_test.rb4
-rw-r--r--activemodel/test/models/contact.rb4
3 files changed, 9 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/serializers/xml.rb b/activemodel/lib/active_model/serializers/xml.rb
index d4295e6afe..19639b1363 100644
--- a/activemodel/lib/active_model/serializers/xml.rb
+++ b/activemodel/lib/active_model/serializers/xml.rb
@@ -33,6 +33,7 @@ module ActiveModel
protected
def compute_type
+ return if value.nil?
type = ActiveSupport::XmlMini::TYPE_NAMES[value.class.name]
type ||= :string if value.respond_to?(:to_str)
type ||= :yaml
diff --git a/activemodel/test/cases/serializers/xml_serialization_test.rb b/activemodel/test/cases/serializers/xml_serialization_test.rb
index b6a2f88667..8f5c196850 100644
--- a/activemodel/test/cases/serializers/xml_serialization_test.rb
+++ b/activemodel/test/cases/serializers/xml_serialization_test.rb
@@ -92,6 +92,10 @@ class XmlSerializationTest < ActiveModel::TestCase
test "should serialize string" do
assert_match %r{<name>aaron stack</name>}, @contact.to_xml
end
+
+ test "should serialize nil" do
+ assert_match %r{<pseudonyms nil=\"true\"></pseudonyms>}, @contact.to_xml(:methods => :pseudonyms)
+ end
test "should serialize integer" do
assert_match %r{<age type="integer">25</age>}, @contact.to_xml
diff --git a/activemodel/test/models/contact.rb b/activemodel/test/models/contact.rb
index f4f3078473..7bfc542afb 100644
--- a/activemodel/test/models/contact.rb
+++ b/activemodel/test/models/contact.rb
@@ -16,6 +16,10 @@ class Contact
options.each { |name, value| send("#{name}=", value) }
end
+ def pseudonyms
+ nil
+ end
+
def persisted?
id
end