0

更新:

复制自以下评论:

我曾考虑为网站的每个访问者使用针对 IP 地址的 Web 服务,但后来我想知道用户在跨时区的位置查看会议,因此时区必须与正在查看的会议的位置相关联,而不是与用户的位置相关联自己就在那一刻。我需要一个用户能够查看会议列表(包含时间和地点),并且显示的时间是实际的会议时间,但是用于列出会议的 SELECT 的 WHERE 子句需要考虑每个会议地点的时区.


我环顾四周,有很多关于在 Rails 应用程序中使用时区的问题。

问题在于应用程序需要知道用户所在的时区,以便它能够正确地对数据库运行查询以检查将来的日期时间。

我不希望我网站的常规访问者需要登录才能使其正常工作,所以我正在考虑以下几点:

  • 管理员用户登录以发布item特定的locationdatetime
  • 保存项目时,它使用[lat,lng]location调用来Timezone gem捕获timezonelocation
  • 我想我需要将它添加到与和timezone相同模型上的额外字段(轨道另存为)(https://stackoverflow.com/a/2533323[lat,lng]datetimeUTC
  • 我需要我的模型将UTC datetime其与其各自的模型相结合,timezone以便当普通用户访问该网站时,网页会选择未来item的位置UTC+timezone datetimes

这听起来可能/正确吗?

如果这听起来令人困惑,请在评论中说,如果可以的话,我会尝试改写得更好。

有人可以为模型提供任何代码来创建与字段virtual attribute相结合的(我认为)吗?UTC datetimetimezone

谢谢

4

1 回答 1

0

拥有国家及其时区列表不是更好吗?当用户来到站点时,确定他来自哪个国家,而不是尝试使用本地 Rails 时区方法。例如,我有具有 created_at 参数的用户和表模型:

Time.zone => (GMT+00:00) UTC
User.last.created_at => Mon, 25 Jun 2012 21:17:25 UTC +00:00
Table.last.created_at => Mon, 16 Jul 2012 14:08:17 UTC +00:00

Time.zone = 'Moscow' => "Moscow"
Time.zone => (GMT+04:00) Moscow

User.last.created_at => Tue, 26 Jun 2012 01:17:25 MSK +04:00
Table.last.created_at => Mon, 16 Jul 2012 18:08:17 MSK +04:00

如何确定您应该寻找宝石或某些服务的国家/地区。我认为这将是通过他的 IP 地址确定用户国家的服务。

于 2012-08-01T19:02:17.247 回答