获取最后5个唯一的created_at日期

时间:2014-03-19 06:53:14

标签: ruby-on-rails ruby

我试图获得一个对象的最后5天。目前我的代码是这样的

Post.uniq('performed_at').ascending.last(5).group_by{|p| p.performed_at}

但是我已经获得4个日期而不是5个日期,我认为这是因为在同一天创建的最后5个日期中有2个条目。如何准确地获取帖子有条目的最后5天?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

Post.select('DISTINCT created_at').order('created_at DESC').limit(5).pluck(:created_at)

答案 1 :(得分:0)

假设您只想要日期本身,而不是唯一的日期时间,那就更好了:

Post.order('created_at desc').uniq.limit(5).pluck('DATE(created_at)')

这将只返回唯一的日历日期,没有任何特定时间。

答案 2 :(得分:0)

只是对此进行更新。我得到了它,这就是我做到的。

Post.select('performed_at').uniq.order('performed_at DESC').limit(5).pluck(:performed_at).reverse

我还添加了反向,因为我希望按时间顺序返回给我几天。我也有uniq()因为select(' DISTINCT perform_at')仍然返回重复的日期。

希望这有帮助。