ruby-on-rails - 获取一个包含过去 2 周内创建的帖子数的数组

标签 ruby-on-rails charts reporting google-visualization sparklines

我想创建迷你图来说明过去 2 周内在我的博客上创建的帖子数量。为此,我需要首先生成一个数组,其中包含相关期间每天创建的帖子数。

例如,这个数组:

[40, 18, 0, 2, 39, 37, 22, 25, 30, 60, 36, 5, 2, 2]

生成此迷你图:(我正在使用 Googlecharts wrapper around the Google Charts API)



我的问题是如何创建这些数组。这是我现在正在做的事情:(我正在使用 Searchlogic 进行查询,但即使您从未使用过它也应该是可以理解的)
  history = []
  14.downto(1) do |days_ago|
    history.push(Post.created_at_after((days_ago + 1).day.ago.beginning_of_day).created_at_before((days_ago - 1).days.ago.beginning_of_day).size)
  end

这种方法既丑陋又缓慢——必须有更好的方法!

最佳答案

这将为您提供散列映射日期以发布计数:

counts = Post.count(
  :conditions => ["created_at >= ?", 14.days.ago],
  :group => "DATE(created_at)"
)

然后你可以把它变成一个数组:
counts_array = []
14.downto(1) do |d|
  counts_array << (counts[d.days.ago.to_date.to_s] || 0)
end

关于ruby-on-rails - 获取一个包含过去 2 周内创建的帖子数的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366884/

相关文章:

eclipse - BIRT:pdf 发射器,从相对路径或 jar 文件加载/使用字体

python - 文档脚本(Matlab 在 python 中的发布功能)

ruby-on-rails - Ruby on Rails 多态关系的优点和缺点

javascript - 如何增加 Google Charts 中 y 轴的长度?

javascript - D3 - 在半饼图/半圆环图上放置标签和线条

sql-server - Reporting Services 2008 : Is there a way to change item properties, 取决于报告的呈现方式?

ruby-on-rails - 设计的自定义身份验证策略

ruby-on-rails - rails 模型 : How to make field read only in Rails model?

ruby-on-rails - rails 中的复杂表单(has_and_belongs_to_many)

java - 将CSV文件中的数据读取到ArrayList中并显示在XY图表中