收集ActiveRecord日期属性以获取时间轴图形的最佳方法

时间:2012-04-12 14:50:47

标签: ruby ruby-on-rails-3

我有点迷失在这一点上。我可以构建一堆计数查询来查找具有给定时间段的最后登录日期的所有记录,例如计算过去一周中每天的数量(7个计数查询,每天一个),但我是有兴趣知道是否有一个漂亮,更有效的Ruby / Rails方法来做到这一点。

我真的没有任何示例代码可以发布。也许这样的事情会有所帮助:

hour_range = 7 * 24 # 7 days worth of hours
start_date = Time.now.to_time - day_range
end_range = Time.now
start_date.to_date.upto(end_range.to_date) do |day|
    # Series of count queries which populate an array of counts for each day...
end

我正在使用Highcharts(或试用它)来绘制客户端图表。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您提前计划,可以在表格中创建可以编制索引的衍生列。这使得将结果分组在一起非常简单。

例如,如果要按天分组,请创建“日期”列。如果你想按周分组,你可以使用一些可用的日期函数来做到这一点,在2012年第4周产生201204之类的值。月份更容易,因为那只是%Y%M格式的日期

其中大部分可以使用本机SQL日期格式化函数作为单独的现有数据迁移填充,也可以作为一系列before_save挂钩填充。

使报告高效且响应迅速的方法是尽可能少地进行查询,并使这些查询尽可能轻松地进行数据库计算。加载数百条记录或进行数十次查询不会扩展。