diff options
author | Lisa Ugray <lisa.ugray@shopify.com> | 2017-07-04 14:22:35 -0400 |
---|---|---|
committer | Lisa Ugray <lisa.ugray@shopify.com> | 2017-07-05 13:10:15 -0400 |
commit | 7b2dfdeab6e4ef096e4dc1fe313056f08ccf7dc5 (patch) | |
tree | c6692d46e31c691c8218a3210cb6d4136a606da4 | |
parent | 2ae84d2fa09af85166f35ca44238a6a20d3c1554 (diff) | |
download | rails-7b2dfdeab6e4ef096e4dc1fe313056f08ccf7dc5.tar.gz rails-7b2dfdeab6e4ef096e4dc1fe313056f08ccf7dc5.tar.bz2 rails-7b2dfdeab6e4ef096e4dc1fe313056f08ccf7dc5.zip |
Fix `ActiveModel::Type::DateTime#serialize`
`ActiveModel::Type::DateTime#serialize` should return a `Time` object
so that finding by a datetime column works correctly.
-rw-r--r-- | activemodel/lib/active_model/type/date_time.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/date_time_test.rb | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/type/date_time.rb b/activemodel/lib/active_model/type/date_time.rb index 5cb0077e45..8ad0daa9a6 100644 --- a/activemodel/lib/active_model/type/date_time.rb +++ b/activemodel/lib/active_model/type/date_time.rb @@ -10,6 +10,10 @@ module ActiveModel :datetime end + def serialize(value) + super(cast(value)) + end + private def cast_value(value) diff --git a/activerecord/test/cases/date_time_test.rb b/activerecord/test/cases/date_time_test.rb index ad7da9de70..6cd98fe254 100644 --- a/activerecord/test/cases/date_time_test.rb +++ b/activerecord/test/cases/date_time_test.rb @@ -58,4 +58,17 @@ class DateTimeTest < ActiveRecord::TestCase assert_equal now, task.starting end end + + def test_date_time_with_string_value_with_subsecond_precision + skip unless subsecond_precision_supported? + string_value = "2017-07-04 14:19:00.5" + topic = Topic.create(written_on: string_value) + assert_equal topic, Topic.find_by(written_on: string_value) + end + + def test_date_time_with_string_value_with_non_iso_format + string_value = "04/07/2017 2:19pm" + topic = Topic.create(written_on: string_value) + assert_equal topic, Topic.find_by(written_on: string_value) + end end |