我的模型中有一个在私有方法中运行的简单方法:
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 没有被重置。
有谁知道为什么会发生这种情况?