我有一个简单的方法在我的模型的私有方法运行:红宝石`ensure`没有运行
def with_time_zone(zone)
@old_time_zone = Time.zone
Time.zone = self.account.timezone
Chronic.time_class = Time.zone
yield
ensure
Time.zone = @old_time_zone
Chronic.time_class = @old_time_zone
end
我用这样的:
with_time_zone(account.timezone) do
Time.parse(@time)
end
然而,当我运行测试,时区设置为EST的开始,但是当需要比较时间时,Time.zone
将设置为该块中最后一次使用的时区。因此告诉我,ensure
方法没有被调用,并且Time.zone未被重置。
任何人都知道为什么会发生这种情况?