Changeset 8815
- Timestamp:
- 02/07/08 17:25:28 (5 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/tztime/lib/tz_time_helpers/active_record_methods.rb
r8547 r8815 21 21 end 22 22 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 32 27 end 33 before_validation :fix_timezone34 28 end 35 29 end plugins/tztime/test/active_record_methods_test.rb
r8547 r8815 54 54 assert_equal Time.utc(2006, 1, 1), @record[:due_on] 55 55 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 56 62 end 57 63 end