Multiparameter attributes for time columns fail over to DateTime when out of range of Time
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8855 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
6608a3ef37
commit
c9402b2277
@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Multiparameter attributes for time columns fail over to DateTime when out of range of Time [Geoff Buesing]
|
||||
|
||||
* Base#instantiate_time_object uses Time.zone.local() [Geoff Buesing]
|
||||
|
||||
* Add timezone-aware attribute readers and writers. #10982 [Geoff Buesing]
|
||||
|
@ -2472,12 +2472,11 @@ def assign_multiparameter_attributes(pairs)
|
||||
)
|
||||
end
|
||||
|
||||
# Includes an ugly hack for Time.local instead of Time.new because the latter is reserved by Time itself.
|
||||
def instantiate_time_object(name, values)
|
||||
if Time.zone && !self.class.skip_time_zone_conversion_for_attributes.include?(name.to_sym)
|
||||
Time.zone.local(*values)
|
||||
else
|
||||
@@default_timezone == :utc ? Time.utc(*values) : Time.local(*values)
|
||||
@@default_timezone == :utc ? Time.utc_time(*values) : Time.local_time(*values)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -923,6 +923,17 @@ def test_multiparameter_attributes_on_time
|
||||
topic.attributes = attributes
|
||||
assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
|
||||
end
|
||||
|
||||
def test_multiparameter_attributes_on_time_with_old_date
|
||||
attributes = {
|
||||
"written_on(1i)" => "1850", "written_on(2i)" => "6", "written_on(3i)" => "24",
|
||||
"written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
|
||||
}
|
||||
topic = Topic.find(1)
|
||||
topic.attributes = attributes
|
||||
# testing against to_s(:db) representation because either a Time or a DateTime might be returned, depending on platform
|
||||
assert_equal "1850-06-24 16:24:00", topic.written_on.to_s(:db)
|
||||
end
|
||||
|
||||
def test_multiparameter_attributes_on_time_with_utc
|
||||
ActiveRecord::Base.default_timezone = :utc
|
||||
|
Loading…
Reference in New Issue
Block a user