我希望在rails应用程序中为我的数据构建一个分析面板。
假设我有一个请求类型列表"Fizz","Buzz","Bang","Bar"。
我想根据类型显示每天的计数。
我该怎么做?
以下是我的计划:
- 将get_bazz_by_day、get_fizz_by_day等添加到适当的模型中
- 在每个模型中,获取Fizz类型的所有记录,然后创建一个存储日期和计数的数组
- 视图中的格式,以便JS库可以将其格式化为漂亮的图形
这听起来合理吗?
根据记录的数量,您的仪表板很快就会出现性能问题。
步骤1具有误导性。不要单独获取每天的数据,尽量一次获取所有数据。
在步骤2中,您可以让数据库使用group方法在几天内进行聚合。
请参阅http://guides.rubyonrails.org/active_record_querying.html#group
Fizz.select("date(created_at) as fizzed_day, count(*) as day_count").
group("date(created_at)")
在步骤3中,您需要注意没有任何气泡的天数仍然显示,因为它们不会在查询中返回。