0

这似乎是一件简单的事情,但我无法弄清楚。

ascorecard有 a skills_development,其中有很多training_programs,其中有很多participants。每个参与者都有一个名为 training_facility_cost 的属性,我需要将其提升一个级别并找出整个 training_program 的设施成本。

因此,将每个孩子参与者的所有设施成本属性相加。解决此类问题的最佳方法是什么。我应该在 sql 查询中执行此操作还是使用嵌套块更有效。

就像是

s.skills_development.training_programs.each do |tp|
  costs = []
  tp.participants.each {|p| costs << p.training_facility_cost}
  costs.inject(:+)
end

虽然我明白了,但这不起作用

NoMethodError: undefined method `+' for nil:NilClass

,我认为这是因为它们都具有 null 的属性。所以它不把它算为零??

有谁知道如何快速简单地做到这一点?

4

1 回答 1

1

试试这样的东西

skills_development.participants.to_a.sum { |p| p.training_facility_cost }
于 2013-07-09T08:21:47.947 回答