在一些帮助下,我能够采用一种方法来显示项目中每天的字数,并将其减少到几乎一个数据库查询。这是方法
def project_range(project, start, finish, &blk)
words = project.words.where(:wrote_on => start..finish)
word_map = words.index_by(&:wrote_on)
for day in start..finish
word_count = word_map[day] ? word_map[day].quantity : 0
blk.call(day, word_count)
end
end
原来的问题在这里:
不过,现在我们想改变用户输入每天字数统计的方式——我们想让他们有机会在一天内输入多个字数,而不是每天只输入一个字数。但是,此方法仅返回输入的最后一天的字数,而不是该特定日期的所有字数。
我尝试将 index_by 更改为 group_by,但我得到了一个未定义的方法错误quantity
。所以,我的问题是......我如何处理同一天的多个条目,其中有两个wrote_on
对象,比如 2012 年 5 月 4 日?