在 Ruby on Rail 中管理多个用户的时区



我想将事件保存在默认时区,即每当用户提交事件时,它都会转换为默认时区并保存在数据库中。

每当用户请求事件时,系统都会找到该用户的时区,并将日期(从默认格式)转换为该用户时区,并将其显示给用户。

很难从哪里开始,我看到了很多笔记和文档,但无法弄清楚这样做的完整过程。

我看到了这段代码,但无法理解如何使用它:

before_filter :set_time_zone
def set_time_zone
  Time.zone = current_user.time_zone if current_user
end

数据库中的默认时区是 UTC。

有两种方法可以做到这一点:

  1. 允许用户将其时区存储在数据库中
  2. 从他们的 IP 中获取他们的时区

对于选项 1,Rails 对时区有很好的支持。#all 方法将允许您创建一个下拉列表供他们选择。然后将其与用户记录一起保存在数据库中。

选项 2 对用户来说工作量较少,但准确性也较低。有一些服务可以将 IP 转换为时区。

要显示给定时区的时间,请使用 Time#in_time_zone,或者您可以按上述方式设置Time.zone,它应该会正确显示。

相关内容

  • 没有找到相关文章

最新更新