Rails为新记录添加并填充created_at
列。
如何使用它来计算在指定时间范围内有记录的天数? (注意:计算天数,不计算记录)。
例如,假设我有一个Post模型,我如何计算去年有多少天有帖子?
答案 0 :(得分: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