Rails作用域中的时间和区域



我有一个类似

的作用域
scope :active_on_a_date, lambda { |date| where(:starts_at.gteq => date, :ends_at.lteq => date)}

传递的日期会自动转换为UTC吗??或者有人能解释一下日期比较是如何发生的吗?我传递的日期是Time.zone.now,在IST +5.30小时

Activerecord将为您从本地时区转换为UTC并返回。

一个来自我的生产应用程序的例子。

在application.rb

config.time_zone = 'Wellington'

(明确应用程序的时区是个好主意)

在我的例子中:

<>之前> Time.zone.now=> 2011年11月2日星期三21:12:58 NZDT +13:00之前Rails控制台:

<>之前> Audio.find .broadcast_at (661256)=> 2006年11月2日星期四21:06:00 NZDT +13:00之前

在数据库中:

<>之前Mysql> select broadcast_at from audio where audio.Id = 661256;+---------------------+broadcast_at |+---------------------+[2006-11-02 08:06:00]+---------------------+之前

DB中的时间比Rails应用程序中的时间晚13个小时。如果我要将我的时区更改为您的时区(IST),则Rails中的时间将进行调整以适应,但DB时间保持不变。

因为返回的时间和代码中的时间来自同一区域,所以它只是一个简单的对象比较。

相关内容

  • 没有找到相关文章