Skip to content

Commit ddb5d2f

Browse files
committed
force datetime attributes to be changed, fix GH rails#3965
1 parent 2adf78d commit ddb5d2f

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def #{attr_name}=(original_time)
5858
end
5959
time = time.in_time_zone rescue nil if time
6060
write_attribute(:#{attr_name}, original_time)
61+
#{attr_name}_will_change!
6162
@attributes_cache["#{attr_name}"] = time
6263
end
6364
EOV

activerecord/test/cases/attribute_methods_test.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,19 @@ def test_setting_time_zone_aware_attribute_with_string
625625
end
626626
end
627627

628+
def test_time_zone_aware_attribute_saved
629+
time_string_1 = "2012-02-20 10:00:00"
630+
time_string_2 = "2012-02-20 09:00:00"
631+
632+
in_time_zone 1 do
633+
record = @target.create(:written_on => '2012-02-20 10:00')
634+
635+
record.written_on = '2012-02-20 09:00'
636+
record.save
637+
assert_equal Time.zone.local(2012, 02, 20, 9), record.reload.written_on
638+
end
639+
end
640+
628641
def test_setting_time_zone_aware_attribute_to_blank_string_returns_nil
629642
in_time_zone "Pacific Time (US & Canada)" do
630643
record = @target.new

0 commit comments

Comments
 (0)