diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-12-23 07:13:54 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-12-23 07:13:54 -0700 |
commit | a054269ff8a3589784e25729359f71d0838b5d3e (patch) | |
tree | 84219728baa43c39b7192eb8ffea04c001a7c456 | |
parent | b5bfd6fe521dc2d3bf6ad1046905ea9751488f2d (diff) | |
parent | d318badc269358c53d9dfb4000e8c4c21a94b578 (diff) | |
download | rails-a054269ff8a3589784e25729359f71d0838b5d3e.tar.gz rails-a054269ff8a3589784e25729359f71d0838b5d3e.tar.bz2 rails-a054269ff8a3589784e25729359f71d0838b5d3e.zip |
Merge Pull Request #18157
Conflicts:
activerecord/CHANGELOG.md
-rw-r--r-- | activerecord/CHANGELOG.md | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb | 6 | ||||
-rw-r--r-- | activerecord/test/cases/date_time_test.rb | 10 |
3 files changed, 20 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 8878ba908d..0bcf6a14ec 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,8 @@ +* Don't raise when writing an attribute with an out-of-range datetime passed + by the user. + + *Grey Baker* + * Replace deprecated `ActiveRecord::Tasks::DatabaseTasks#load_schema` with `ActiveRecord::Tasks::DatabaseTasks#load_schema_for`. 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 87274dd4e1..777f7ab4d7 100644 --- a/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb +++ b/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb @@ -12,7 +12,11 @@ module ActiveRecord if value.is_a?(Array) value.map { |v| type_cast_from_user(v) } elsif value.respond_to?(:in_time_zone) - value.in_time_zone || super + begin + value.in_time_zone || super + rescue ArgumentError + nil + end end end diff --git a/activerecord/test/cases/date_time_test.rb b/activerecord/test/cases/date_time_test.rb index c0491bbee5..c2ec92c40d 100644 --- a/activerecord/test/cases/date_time_test.rb +++ b/activerecord/test/cases/date_time_test.rb @@ -3,6 +3,8 @@ require 'models/topic' require 'models/task' class DateTimeTest < ActiveRecord::TestCase + include InTimeZone + def test_saves_both_date_and_time with_env_tz 'America/New_York' do with_timezone_config default: :utc do @@ -29,6 +31,14 @@ class DateTimeTest < ActiveRecord::TestCase assert_nil task.ending end + def test_assign_bad_date_time_with_timezone + in_time_zone "Pacific Time (US & Canada)" do + task = Task.new + task.starting = '2014-07-01T24:59:59GMT' + assert_nil task.starting + end + end + def test_assign_empty_date topic = Topic.new topic.last_read = '' |