0

这是我在 Stackoverflow 上的第一个问题,所以不要把我拆散!如果我的问题太长或太基本,我深表歉意,但我认为如果我输入清楚、清晰和丰富,所有相关人员都更容易理解我的问题。如果我的问题格式可以改进,请让我知道以后的问题。

为了把事情放在上下文中,我正在创建一个 Ruby on Rails 应用程序,该应用程序涉及在 Googlegraphs上显示一组记录( Times )。这些Times记录有两个重要的属性;他们的“日期”属性和“小时工作时间”属性。简而言之,我需要在图表上显示特定日期的所有“hours_worked” 。因此,要在图表上显示的数组的第一个元素保存第一个日期的所有“ hours_worked ”值,第二个元素保存第二个日期的所有“hours_worked”值,依此类推。

显然,我不能将所有记录的“hours_worked”值放入一个数组中,因为这样会完全忽略“date”属性。如果我有一个'hours_worked'数组,其中两个元素在同一个'date'上,则图表不会知道这一点,并且会简单地显示它们,而根本不确认'date'

我的伪代码“解决方案”:

我虽然可以尝试遍历所有“时间”记录并将它们拆分为“日期”已经存在于一个数组中的记录,然后将所有副本放在另一个数组中:

@array1 = []#Original values
@array2 = []

@task.time_and_attendances.each do |f|
 if f.date is not in @array2
 @array2 << f

else

  @array1 << f

然后我想比较这两个数组,如果@array2 包含@array1 包含的任何日期,只需将“hours_worked”加在一起。因为@array1 将包含需要此添加的所有记录,所以具有多条记录的日期将仅将它们的“hours_worked”属性组合在一起。这会给我一个数组,其中每个值是每个日期的“hours_worked”总量。

这将是我的问题的理想解决方案,但我对如何实施它感到困惑。有没有人有任何想法?

4

1 回答 1

0

也许是这样的:

Time.select('date, sum(hours_worked) as total_hours_worked').group('date(date)')

这应该为您提供一组具有 date 和 total_hours_worked 属性的 Time 对象。

于 2013-03-25T18:21:29.680 回答