我有一段看起来像
的代码runs.this_month.group_by(&:week).each do |week,runs|
puts 'week' + week
puts runs.size
end
现在它只返回
week00
1
week 03
1
我希望这个循环生成的是一个具有0的对象,如果该周没有运行。例如,如果我有一月份的月份,并且第一周有一次运行,第二周没有运行,第三周运行一次,上周没有运行,理想情况下会返回看起来像
[1,0,1,0]
我认为我的问题是group_by()可枚举,不知道一个月有多少个星期。
同样FWIW this_month范围在本月查找带有:created_at的所有runs
。该位按预期工作,并从本月返回一组所有运行。
EDIT1:
这很草率,但似乎有效:
month = [0,0,0,0]
weeks = [0,1,2,3]
runs.this_month.group_by(&:week).each do |week,runs|
if weeks.include? (week[0].to_i)
month[week.to_i] = runs
end
end
工作意味着月份
[ActiveRecord...,0,ActiveRecord...,0]
答案 0 :(得分:1)
我猜weeks
是整数0,1,2,3。
default_stats = { 0: [], 1: [], 2: [], 3: [] }
runs.this_month.group_by(&:week).reverse_merge(default_stats)