diff options
author | José Valim <jose.valim@gmail.com> | 2012-02-28 10:09:40 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-02-28 10:09:40 -0800 |
commit | 5bbd2d3aa805965c83b284d85efb17d97ba316b5 (patch) | |
tree | 00ff062b7378776745211548c56acac33f37eff6 | |
parent | 25aa4c7bdc78f2d8146cd4b7e8024e618066baf0 (diff) | |
parent | ddb5d2f756d9d2655a07791a3b62832efd588474 (diff) | |
download | rails-5bbd2d3aa805965c83b284d85efb17d97ba316b5.tar.gz rails-5bbd2d3aa805965c83b284d85efb17d97ba316b5.tar.bz2 rails-5bbd2d3aa805965c83b284d85efb17d97ba316b5.zip |
Merge pull request #5196 from lest/patch-3
force datetime attributes to be changed, fix GH #3965
-rw-r--r-- | activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb | 1 | ||||
-rw-r--r-- | activerecord/test/cases/attribute_methods_test.rb | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb b/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb index 20372c5c18..ac31b636db 100644 --- a/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb +++ b/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb @@ -58,6 +58,7 @@ module ActiveRecord end time = time.in_time_zone rescue nil if time write_attribute(:#{attr_name}, original_time) + #{attr_name}_will_change! @attributes_cache["#{attr_name}"] = time end EOV diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb index 4078b7eb0b..fb51925a38 100644 --- a/activerecord/test/cases/attribute_methods_test.rb +++ b/activerecord/test/cases/attribute_methods_test.rb @@ -625,6 +625,19 @@ class AttributeMethodsTest < ActiveRecord::TestCase end end + def test_time_zone_aware_attribute_saved + time_string_1 = "2012-02-20 10:00:00" + time_string_2 = "2012-02-20 09:00:00" + + in_time_zone 1 do + record = @target.create(:written_on => '2012-02-20 10:00') + + record.written_on = '2012-02-20 09:00' + record.save + assert_equal Time.zone.local(2012, 02, 20, 9), record.reload.written_on + end + end + def test_setting_time_zone_aware_attribute_to_blank_string_returns_nil in_time_zone "Pacific Time (US & Canada)" do record = @target.new |