From c99df461f45c514d434a6f0bcb368320b71fd0c8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 5 Aug 2006 20:50:26 +0000 Subject: Fixed that default timezones for new / initialize should uphold utc setting (closes #5709) [daniluk@yahoo.com] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4670 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ activerecord/lib/active_record/base.rb | 2 +- activerecord/test/base_test.rb | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 550e5adb3a..614cb2a1c0 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that default timezones for new / initialize should uphold utc setting #5709 [daniluk@yahoo.com] + * Fix announcement of very long migration names. #5722 [blake@near-time.com] * The exists? class method should treat a string argument as an id rather than as conditions. #5698 [jeremy@planetargon.com] diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 40dfb387ce..1d9f0175bd 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -1996,7 +1996,7 @@ module ActiveRecord #:nodoc: send(name + "=", nil) else begin - send(name + "=", Time == klass ? klass.local(*values) : klass.new(*values)) + send(name + "=", Time == klass ? (@@default_timezone == :utc ? klass.utc(*values) : klass.local(*values)) : klass.new(*values)) rescue => ex errors << AttributeAssignmentError.new("error on assignment #{values.inspect} to #{name}", ex, name) end diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index d3f2840291..9518e0aca8 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -560,6 +560,22 @@ class BasicsTest < Test::Unit::TestCase Topic.default_timezone = :local end + def test_utc_as_time_zone_and_new + # Oracle and SQLServer do not have a TIME datatype. + return true if current_adapter?(:SQLServerAdapter, :OracleAdapter) + + Topic.default_timezone = :utc + attributes = { "bonus_time(1i)"=>"2000", + "bonus_time(2i)"=>"1", + "bonus_time(3i)"=>"1", + "bonus_time(4i)"=>"10", + "bonus_time(5i)"=>"35", + "bonus_time(6i)"=>"50" } + topic = Topic.new(attributes) + assert_equal Time.utc(2000, 1, 1, 10, 35, 50), topic.bonus_time + Topic.default_timezone = :local + end + def test_default_values_on_empty_strings topic = Topic.new topic.approved = nil -- cgit v1.2.3