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