Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 8855

Show
Ignore:
Timestamp:
02/10/08 22:46:31 (7 months ago)
Author:
gbuesing
Message:

Multiparameter attributes for time columns fail over to DateTime when out of range of Time

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/CHANGELOG

    r8847 r8855  
    11*SVN* 
     2 
     3* Multiparameter attributes for time columns fail over to DateTime when out of range of Time [Geoff Buesing] 
    24 
    35* Base#instantiate_time_object uses Time.zone.local() [Geoff Buesing] 
  • trunk/activerecord/lib/active_record/base.rb

    r8847 r8855  
    24732473      end 
    24742474 
    2475       # Includes an ugly hack for Time.local instead of Time.new because the latter is reserved by Time itself. 
    24762475      def instantiate_time_object(name, values) 
    24772476        if Time.zone && !self.class.skip_time_zone_conversion_for_attributes.include?(name.to_sym) 
    24782477          Time.zone.local(*values) 
    24792478        else 
    2480           @@default_timezone == :utc ? Time.utc(*values) : Time.local(*values) 
     2479          @@default_timezone == :utc ? Time.utc_time(*values) : Time.local_time(*values) 
    24812480        end 
    24822481      end 
  • trunk/activerecord/test/cases/base_test.rb

    r8808 r8855  
    924924    assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on 
    925925  end 
     926   
     927  def test_multiparameter_attributes_on_time_with_old_date 
     928    attributes = { 
     929      "written_on(1i)" => "1850", "written_on(2i)" => "6", "written_on(3i)" => "24", 
     930      "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00" 
     931    } 
     932    topic = Topic.find(1) 
     933    topic.attributes = attributes 
     934    # testing against to_s(:db) representation because either a Time or a DateTime might be returned, depending on platform 
     935    assert_equal "1850-06-24 16:24:00", topic.written_on.to_s(:db) 
     936  end 
    926937 
    927938  def test_multiparameter_attributes_on_time_with_utc