更新:
复制自以下评论:
我曾想过对每个网站访问者的IP地址使用web服务,但后来我想知道用户在跨时区的位置查看会议,因此时区必须与正在查看的会议的位置相关联,而不是用户自己当时所在的位置。我需要用户能够看到会议列表(包括时间和地点),显示的时间是实际的会议时间,但SELECT中列出会议的WHERE子句需要考虑每个会议地点的时区。
我环顾四周,发现有很多关于在rails应用程序中使用时区的问题。
例如,问题在于应用程序需要知道用户所在的时区,才能正确地对数据库运行查询,以检查未来的日期时间。
我不希望我的网站的常客需要登录才能正常工作,所以我想的是:
- 管理员用户登录以发布特定
location
和datetime
的item
- 保存项目时,它使用
location
的[lat,lng]
调用Timezone gem
来捕获location
的timezone
- 我想我需要将这个
timezone
添加到与[lat,lng]
和datetime
(rails保存为UTC
)相同型号的额外字段中(https://stackoverflow.com/a/2533323) - 我需要我的模型将
UTC datetime
与其各自的timezone
组合起来,这样当普通用户来到网站时,网页就会选择item
,UTC+timezone datetimes
将来在哪里
这听起来可能/正确吗?
如果这听起来很困惑,请在评论中说出来,如果可以的话,我会尽量把它改写得更好。
有人能为模型提供任何代码来创建一个virtual attribute
(我认为),它将UTC datetime
与timezone
字段相结合吗?
感谢
有国家和时区的列表不是更好吗?当用户来到网站时,确定他来自哪个国家,然后尝试使用本地rails时区方法。例如,我有User和Table模型,它们创建了_at params:
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地址来确定用户的国家/地区。