From 4dd563592208a1d1a5d617ceaa8c22aa8a56adb8 Mon Sep 17 00:00:00 2001 From: Andrew White Date: Tue, 11 Dec 2012 12:35:30 +0000 Subject: Only call `in_time_zone` on Time or DateTime instances Both String and Date now respond to in_time_zone so we need to check if the value is a Time or a DateTime. --- activemodel/lib/active_model/serializers/xml.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/activemodel/lib/active_model/serializers/xml.rb b/activemodel/lib/active_model/serializers/xml.rb index 4a17a63e20..648ae7ce3d 100755 --- a/activemodel/lib/active_model/serializers/xml.rb +++ b/activemodel/lib/active_model/serializers/xml.rb @@ -2,6 +2,7 @@ require 'active_support/core_ext/class/attribute_accessors' require 'active_support/core_ext/array/conversions' require 'active_support/core_ext/hash/conversions' require 'active_support/core_ext/hash/slice' +require 'active_support/core_ext/time/acts_like' module ActiveModel module Serializers @@ -20,7 +21,11 @@ module ActiveModel def initialize(name, serializable, value) @name, @serializable = name, serializable - value = value.in_time_zone if value.respond_to?(:in_time_zone) + + if value.acts_like?(:time) && value.respond_to?(:in_time_zone) + value = value.in_time_zone + end + @value = value @type = compute_type end -- cgit v1.2.3