我正在尝试在Active Record中对一系列记录进行分组,因此我可以进行一些计算来规范化每个记录的数量属性,例如:
用户输入日期和数量。日期不是唯一的,因此每个日期我可能有10到20个数量。我只需要处理每一天的总数,而不是每个单独的记录。因为在确定最高值和最低值之后,我将每一个转换为基本上除以n
,通常为10。
这就是我现在正在做的事情:
def heat_map(project, word_count, n_div)
return "freezing" if word_count == 0
words = project.words
counts = words.map(&:quantity)
max = counts.max
min = counts.min
return "max" if word_count == max
return "min" if word_count == min
break_point = (max - min).to_f/n_div.to_f
heat_index = (((word_count - min).to_f)/break_point).to_i
end
如果我显示一个包含所有单词计数的表格,这会很有效,但我正在尝试将热图应用于显示每天运行总计的日历。这显然不会影响天数,因此我最终得出的数字超出正常范围。
我无法找到一种方法来对字数进行分组,并在进行标准化之前的一天将它们总计。我尝试了一个group_by然后添加了map调用,但是我收到一个错误,一个未定义的方法错误。有任何想法吗?我也愿意采用更好/更清洁的方法来规范字数。
答案 0 :(得分:0)
如果不了解您的模型,很难回答。所以我假设您感兴趣的日期只是created_at
表中的words
日期。我假设您的words
表格中有一个名为word
的字段,您可以在其中存储实际字词。
我还假设你可能在一天内为同一个单词(可能有不同的数量)有多个条目。
因此,这将为您提供每日字数的有序哈希:
project.words.group('DATE(created_at)').group('word').sum('quantity')
如果这些猜测毫无意义,那么也许您可以提供一些关于模型结构的更多细节。