我想创建迷你图来说明过去 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/