通常我的 webapp 中有日期时间字段,这些字段由 Rails 作为 UTC 时间存储在 postgresql 数据库中。当我在网页上显示这些日期和时间时,它们会以当地时间显示,因为我有类似于以下代码的内容:
before_filter :set_time_zone
def set_time_zone
Time.zone = "Pacific Time (US & Canada)"
end
效果很好,除了现在我需要将其中一些datetime
字段转换date
为数据库中的字段(这很重要)。例如,我可能有学生开始日期的日志:
Log.create(at: began_at, student_id: student_id)
began_at
是一个datetime
字段。我是否正确设置了 Time.zone 并不重要,该at
字段是 adate
并且它将存储在 postgresql 中,可能会提前或落后当地时间 1 天。当我去显示那个日期时,它不会转换为本地时间,这是有道理的......如果我没有存储时间,Ruby/Rails 怎么知道它是本地的哪一天?
我需要的是存储本地日期。所以我需要先转换began_at
为当地时间,然后再将其分配给at
. 在 Rails 的控制器中执行此操作的正确方法是什么?
我正在使用最新的稳定 Rails(现在是 3.2.9)