Ruby on rails 将结果与0相加

Ruby on rails 将结果与0相加,ruby-on-rails,algorithm,rails-postgresql,Ruby On Rails,Algorithm,Rails Postgresql,我有一个rails 4(ruby 2)应用程序,可以跟踪不同公司员工的时间。我需要每个公司每个日期的分钟数。我的问题是,如果那天没有该公司的时间条目,我不确定用0填充日期/公司对的最佳方法 表格 Companies Time_Entries id name ... id, created_at, company_id, minutes ... 当前输出仅考虑2家公司和2天 [{"company_id":1,"company_name":"Company A","date":"2

我有一个rails 4(ruby 2)应用程序,可以跟踪不同公司员工的时间。我需要每个公司每个日期的分钟数。我的问题是,如果那天没有该公司的时间条目,我不确定用0填充日期/公司对的最佳方法

表格

Companies      Time_Entries
id name ...    id, created_at, company_id, minutes ...
当前输出仅考虑2家公司和2天

[{"company_id":1,"company_name":"Company A","date":"2013-06-24","minutes":987},
 {"company_id":1,"company_name":"Company A","date":"2013-06-25","minutes":5},
 {"company_id":2,"company_name":"Company B","date":"2013-06-24","minutes":500}]
预期输出要做的是,没有用0记录的pad天数将在列表中有一个附加项,其中最后一项是新项

[{"company_id":1,"company_name":"Company A","date":"2013-06-24","minutes":987},
 {"company_id":1,"company_name":"Company A","date":"2013-06-25","minutes":5},
 {"company_id":2,"company_name":"Company B","date":"2013-06-24","minutes":500},
 {"company_id":2,"company_name":"Company B","date":"2013-06-25","minutes":0}]
当前查询(PostgreSQL)

我不知道最好的办法是什么。我可以想出几个选择:

  • 通过天循环的3个深度循环,而不是通过公司循环,而不是通过发现的结果循环,以添加尚未添加的任何天/公司对
  • 对postgresq中的日期范围在
    generate_series()
    上执行左连接,并将空和合并为0,但我认为这不会一直解决问题
  • 一些未知的更好更优雅的选择

语法错误。请解释你的意图。还有你真正尝试过的。数据模型也会有帮助。很公平。。。事实上,我已经重构了我的图形库,以避免对数据如此挑剔。。。所以这个问题现在基本上是个哑巴。如果我删除这个问题,你会失去投票权吗?
 @minutes = TimeEntry.where("created_at >= ?", 1.week.ago.utc)
  .group('companies.id, date(created_at)')
  .joins(:company)
  .select("companies.id as company_id", "companies.name as company_name", "date(created_at)", "SUM(minutes) as minutes")
  .order("date ASC")