diff --git a/lib/mongo_mapper/extensions/time.rb b/lib/mongo_mapper/extensions/time.rb index f891ed62c..1cfe8710e 100644 --- a/lib/mongo_mapper/extensions/time.rb +++ b/lib/mongo_mapper/extensions/time.rb @@ -8,12 +8,7 @@ def to_mongo(value) else time_class = ::Time.try(:zone).present? ? ::Time.zone : ::Time time = value.is_a?(::Time) ? value : time_class.parse(value.to_s) - # for ree (1.8.7) versions - if RUBY_VERSION < "1.9" - at(Float((time.to_f*1000).to_i)/Float(1000)).utc if time # ensure milliseconds are preserved with to_f (issue #308) - else - at(time.to_f).utc.round(3) if time # ensure milliseconds are preserved with to_f (issue #308) - end + iso8601(time.utc.iso8601(3)).utc if time # keep time with milliseconds. (Same as BSON time) end end diff --git a/test/unit/test_time_zones.rb b/test/unit/test_time_zones.rb index 733e2c620..ec6318061 100644 --- a/test/unit/test_time_zones.rb +++ b/test/unit/test_time_zones.rb @@ -11,7 +11,7 @@ class TimeZonesTest < Test::Unit::TestCase should "preserve milliseconds" do doc = @document.new(:created_at => '2011-02-12 16:01:02.543Z') - doc.created_at.should be_close(Time.parse('2011-02-12 16:01:02.543Z'), 0.0000001) + doc.created_at.should be_close(Time.parse('2011-02-12 16:01:02.543Z'), 0.0001) end should "work without Time.zone" do