【问题标题】:Get comments after the timestamp given在给定的时间戳之后获取评论
【发布时间】:2015-05-23 05:39:46
【问题描述】:

我正在关注 Ryan 的轮询 cmets 教程,并且工作正常,但在轮询数据时,他使用 id 仅获取最新的 cmets。如何使用时间戳仅轮询最新的 cmets

这是模型、控制器、视图、咖啡脚本的要点链接 https://gist.github.com/silvercrow27/e08c0142af43aec39f02

【问题讨论】:

  • 时间戳代表什么? created_at?
  • mongoids 默认时间戳格式。 updated_at
  • 你到底想在这里做什么?你的模型是什么样的?你有什么输入,你期望什么输出?
  • @muistooshort 我试图做的是仅根据给定的时间戳轮询最新的 cmets。我通过数据属性获得了最后一条评论中的时间戳。我期望的输出是在给定时间戳之后创建的 cmets。
  • 那么 devkaoru 的回答有什么问题呢?你可能想要gt 而不是gte?您需要更多过滤吗?

标签: ruby-on-rails ruby timestamp mongoid


【解决方案1】:

Mongoid 你想要的:

Post.where(:updated_at.gte => 1.hour.ago)

这将返回您在过去一小时内更新的帖子。

【讨论】:

  • 这会得到所有帖子吗?
  • 我刚才试过你的答案,但如果我是发帖的人。它会复制内容。
【解决方案2】:

如果你的意思是 created_at 作为时间戳,那么你可以使用这样的东西

post = Post.order("created_at").last

获取最近创建的

post = Post.order("updated_at").last

获取最近更新的

【讨论】:

  • 这会得到所有的帖子,这是个坏主意。
  • 我只需要通过投票获得所有最新的帖子。例如,我输入时间 2015-05-23 05:56:08。我需要在指定的时间后拿到所有的 cmets。
【解决方案3】:

你可以试试这样的:

timestamp = 1432360568
Model.where(:updated_at => Time.at(timestamp))
# Model Load (20.4ms)  SELECT `models`.* FROM `models` WHERE `models`.`updated_at` = '2015-05-23 05:56:08'

假设 cmets 属于帖子,并且您希望在给定时间戳之后获取特定帖子的所有 cmets。这可以像这样完成:

Comment.where(:post_id => post.id).where("updated_at > ?", Time.at(timestamp))

【讨论】:

  • 我需要所有 cmets 而不仅仅是具有该时间戳的某个文档
  • 对此感到抱歉。基于时间戳的所有 cmets。例如,我输入时间 2015-05-23 05:56:08。我需要在指定的时间后拿到所有的 cmets。
  • 稍后再试试你的答案。如果时间戳的值是 2015-05-23%05:56:08 这样它会起作用吗?
  • "updated_at > ?" 不适用于 Mongoid。 MySQL 输出表明您将 Mongoid 与 ActiveRecord 混淆了,它们完全不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多