Rails 3.1.8奇怪的时区行为。减去dates.to_i给出零,红宝石说日期不同

时间:2012-10-19 21:07:49

标签: datetime ruby-on-rails-3.1 timezone

我正在从rails 3升级到3.1.8(及以后)。我的几个测试都失败了,其中一个似乎乍一看是因为mysql2 gem(0.2.x到0.3.x)的变化。然而,它有点陌生。这就是发生的事情。

在我的测试中,我正在更新模型上的属性,并检查它们是否已保存:

...     发布:创建,:广告=> @advertisement_attributes     assert_equal指定(:blah).start_date,@ blah_attributes [:start_date]

说它们是不同的时代是失败的。 如果我在assert_equal之前放置binding.pry并跳转,这就是我得到的:

a =  assigns(:blah).start_date
b =  @blah_attributes[:start_date]
a == b #false
a.to_s #"2012-10-17 20:46:12 UTC"
b.to_s #"2012-10-17 20:46:12 UTC"
a.to_i #1350506772
b.to_i #1350506772
a.to_i - b.to_i #0

到目前为止......我仍然对为什么==返回false感到困惑。但是真奇怪是什么,如果我减去日期 -

a - b #-0.989403009414673

如果有人能解释这里发生了什么,我很想知道!

此外,同样的测试在rails 3中传递良好(没有为应用程序设置时区),任何改变指针的指针也会很方便!

0 个答案:

没有答案