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

Changeset 8815

Show
Ignore:
Timestamp:
02/07/08 17:25:28 (5 months ago)
Author:
rick
Message:

remove fix_timezone before_validation hook and convert times as they are set. Closes #10058 [toolmantim]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/tztime/lib/tz_time_helpers/active_record_methods.rb

    r8547 r8815  
    2121        end 
    2222         
    23         protected 
    24           def fix_timezone 
    25             tz_time_attributes.each do |attribute| 
    26               time = read_attribute(attribute) 
    27               if (time.acts_like?(:time) || time.acts_like?(:date)) && !time.utc? 
    28                 write_attribute(attribute, Time.at(TzTime.zone.local_to_utc(time))) 
    29               end 
    30             end 
    31           end 
     23        define_method "#{attribute}=" do |local_time| 
     24          fixed = (local_time.acts_like?(:time) || local_time.acts_like?(:date)) ? TzTime.at(local_time) : nil 
     25          write_attribute(attribute, fixed) 
     26        end 
    3227      end 
    33       before_validation :fix_timezone 
    3428    end 
    3529  end 
  • plugins/tztime/test/active_record_methods_test.rb

    r8547 r8815  
    5454      assert_equal Time.utc(2006, 1, 1), @record[:due_on] 
    5555    end 
     56     
     57    def test_should_only_fix_timezones_that_have_been_written 
     58      @record.instance_variable_set(:@due_on, Time.utc(2006, 1, 1)) 
     59      @record.send :fix_timezone 
     60      assert_equal TzTime.utc(2006, 1, 1), @record.due_on 
     61    end 
    5662  end 
    5763end