【问题标题】:Getting objects updated in last 10 seconds from ActiveRecord's find从 ActiveRecord 的查找中获取最近 10 秒内更新的对象
【发布时间】:2009-01-29 19:13:52
【问题描述】:

我想从 ActiveRecord 的查找中获取最近 10 秒内更新的对象。

我试过这样做

@chats = Chat.find(:all, :conditions => ["updated_at > ?", 10.seconds.ago] )

还有

@chats = Chat.find(:all, :conditions => ["updated_at > ?", Time.now-10.seconds] )

甚至

@chats = Chat.find(:all, :conditions => {:updated_at => 10.seconds.ago..0.seconds.ago}]

但我仍然无法让它工作:(

编辑:我正在从另一个应用程序更新该列以使其保持活动状态,并且我正在查看我在过去 10 秒内保持活动状态的所有行,以处理死聊天。

【问题讨论】:

  • 在您的日志中生成的查询是什么样的?

标签: ruby-on-rails activerecord find


【解决方案1】:

您确定查询的是正确的列吗?我认为您可能需要查看 created_at 时间戳。我不知道你的应用程序,但我很惊讶你正在更新现有的聊天,而不是仅仅插入新的。

所以...如果我的假设是正确的,这可能就是您要寻找的:

@chats = Chat.find(:all, :conditions => ["created_at > ?", 10.seconds.ago] )

如果不是...请提供更多信息。查询应该可以正常工作,我猜 updated_at 可能没有更新。

【讨论】:

  • 嗨。感谢回复。我更新了帖子。基本上,我只需要显示活动的列,并且我正在修改一个列以保持活动状态。
  • 您是否确认 Rails 应用程序中的日期正在更新,并且日期的格式适合您的数据库?
【解决方案2】:

问题出在 Rails 的 UTC 默认值中。我把它改成 config.time_zone = '太平洋时间(美国和加拿大)' 现在它可以正常工作了:)

【讨论】:

  • 啊啊啊,是的。如果您的系统没有使用相同的时区,我想会这样做。
猜你喜欢
  • 1970-01-01
  • 2022-08-11
  • 2019-04-02
  • 1970-01-01
  • 2017-12-20
  • 2015-04-28
  • 2015-03-10
  • 1970-01-01
  • 2022-12-28
相关资源
最近更新 更多