Ruby on rails 按天分组和总和不正确

Ruby on rails 按天分组和总和不正确,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个密码: total_rate = company.crews .joins(:assignment) .where(assignments: { date: week[:from]..week[:to] }) .group_by_day('assignments.date', format: '%Y-%m-%d') .joins(

我有一个密码:

total_rate = company.crews
                    .joins(:assignment)
                    .where(assignments: { date: week[:from]..week[:to] })
                    .group_by_day('assignments.date', format: '%Y-%m-%d')
                    .joins(:workers)
                    .sum('workers.rate')
在产量方面,我们有两名工人,费率=4,5,应该是9。没错

如果在最后一行很容易进行.sum('workers.rate'),那么所有内容都会正常分组,并进行汇总。 输出是

{13:00=>9}9是worker.first.rate=4,worker.last=5

但是,在这里,当我尝试乘以一个条件更多的时间,结果是每个worker.reit都乘以时间差, 但你需要的是9*13:00的工人工资

.sum('workers.rate * (time_arriving - time_leaving)')
不是4*13.00+5*13.00

这就是问题所在…

假设Postgres:

“time”-“time”将返回一个间隔,将其与整数相乘不会改变类型

您需要先提取小时数,然后将其乘以速率。 此查询显示如何获取小时数:

从作业中选择提取(从时间开始的历元-从时间开始的历元)/3600


请注意,
select extract(hour from time\u leave-time\u start)from assignments
将只提取完整的小时数,因此
12:00-10:15
将返回“1”

Ruby on Rails中没有
groupby\u day
方法。你希望这个方法做什么?这个方法定义在哪里?你是自己写的还是使用了一个提供这种方法的gem?时间到达和时间离开是什么数据类型?是的,@Pascal t.time“time\u leaving”t.time“time\u reaming”