加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails //在白天按时区查询

发布时间:2020-12-16 21:06:13 所属栏目:百科 来源:网络整理
导读:在使用时区时,并没有那么自信,在这个问题上寻求帮助 我有一个cron作业,每隔一段时间检查一次用户,这会调用一个rake任务.在此rake任务中,我查询用户并根据条件发送每个电子邮件. 我有每个用户的时区信息.我想对那些只返回当前白天用户的用户进行查询 如何实现
在使用时区时,并没有那么自信,在这个问题上寻求帮助

我有一个cron作业,每隔一段时间检查一次用户,这会调用一个rake任务.在此rake任务中,我查询用户并根据条件发送每个电子邮件.

我有每个用户的时区信息.我想对那些只返回当前白天用户的用户进行查询

如何实现这一目标?

最好

解决方法

这取决于几个不同的东西,但我将根据我的网站设置方式.我的用户模型有一个名为timezone的列,时区存储在该列中的方式示例为:“US / Central”

我会通过将当前在特定时间范围内的时区名称数组合在一起,然后查询User表来解决这个问题.

zones = ActiveSupport::TimeZone.zones_map.values.
  map { |z| z.name if (8..20).cover?(z.now.hour) }.compact
users = User.where(timezone: zones)

‘zones_map.values’部分将拉回所有时区的列表,然后我们将它们映射为仅返回当前有一小时在8AM(8)和8PM(20)之间的那些名称.然后,我们在查询中使用map返回的数组供用户使用.

所以’z.now’会给我们当前时间,我们使用'(8..20).cover?’看看’z.now.hour’是否在8到20之间.

** 12以上的小时不会重置为1,而是继续为13,14等.

不确定是否有更快/更有效的方式,但这是我发现它保持查询并避免循环遍历所有用户的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读