2

Rails 为新记录添加并填充一created_at列。

如何使用 来计算在指定时间范围内有记录的天数?(注:计算天数,不计算记录)。

例如,假设我有一个 Post 模型,我如何计算去年有多少天有一个 Post?

4

1 回答 1

4

由于您要求使用 ruby​​ 方式,因此它是:

Post.where('created_at >= ?', 1.year.ago).map { |p| p.created_at.beginning_of_day }.uniq.size

更新

您可以将以下内容放入您的 Post 模型中

def self.number_of_days
  where('created_at >= ?', 1.year.ago).map { |p| p.created_at.beginning_of_day }.uniq.size
end

然后在您的控制器中,您可以执行以下操作

@user.posts.number_of_days

这是一种将大部分工作委托给数据库的更有效方式(MySQL,不确定它是否适用于其他数据库):

Post.where('created_at >= ?', 1.year.ago).group('DATE(created_at)').length
于 2012-06-01T02:21:26.390 回答