2012-06-25 13 views
1

我想组的一系列活动记录的记录,所以我可以做一些计算,以标准化每条记录的例如是数量属性:分组,共计在Rails和活动记录

用户输入一个日期和数量。日期不是唯一的,所以每个日期我可能有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,然后添加地图调用,但我得到一个错误未定义的方法错误。有任何想法吗?我也开放更好/更清洁的方式来正常化字数。

回答

0

很难回答,不知道更多关于您的模型。因此,我将假设您感兴趣的日期仅为words表中的created_at日期。我假设您的words表中有一个字段名为word,您可以在其中存储实际字词。

我还假设你可能在同一天有多个词条(可能有不同的数量)。

那么,这会给你每一天的单词数的有序哈希:

project.words.group('DATE(created_at)').group('word').sum('quantity') 

如果这些猜测毫无意义,那么也许你可以给你的模型的结构更详细一点。