这只是一个快速的问题。我在这里写了一个功能,它创建一个哈希,其中以开发人员名称作为键,他为他完成的每个功能得分的分数加在一起。但是我们确实有懒惰的开发人员不会将自己分配给任务,因此我们得到了以 nil 作为键的哈希值,我得到了 NoMethodError: undefined method `name' for nil:NilClass。什么是忽略零的干净方法?这是我的代码
feat_hash = {}
features.group_by {|dev| dev.developer.name}.each {|dev_id, feat| feat_hash[dev_id] = feat.inject(0){|sum, x| sum + x.points}}
提前致谢!:D
编辑:很酷,所以这是我运行它时得到的输出。您会注意到它通过具有已分配功能的 sprint 和那些为空的 sprint 进行渲染,但是一旦它进入带有未分配功能的散列,并以 nil 作为键,它就会出错。
_________features___________
{"Gary"=>13, "Rob"=>8, "Hannes"=>8, "Sandra"=>1}
___________bugs_____________
{}
__________chores____________
{}
*************** New Sprint ************************
_________features___________
{}
___________bugs_____________
{}
__________chores____________
{}
*************** New Sprint ************************
_________features___________
{}
___________bugs_____________
{}
__________chores____________
{}
*************** New Sprint ************************
NoMethodError: undefined method `name' for nil:NilClass
然后是错误堆栈的其余部分