我正在构建一个rails 5应用程序。在这个应用中,我得到了两个对象/模型。记分卡和度量。
使用scorecard_id,一个记分卡可以有多个记分卡(子项)。记分卡还可以有许多度量。每个度量值都有一个保存为浮点数的分数属性。
此层次结构可以在两个级别上完成:
Scorecard A
-> Scorecard B
-> Measure A (score 7.5)
-> Measure B (score 8.0)
我想要获得计分卡A对象的度量A和B的平均分数。
如果我得到记分卡B,我可以使用下面的方法很容易地获得度量A和B的平均分数,但我需要通过顶级对象(记分卡A)获得它。
def score
self.measures.sum(:score) / self.measures.count
end
发布于 2018-07-03 02:02:56
您需要遍历每个记分卡和度量,并收集总分和计数,以便在最后进行计算。这是一个快速而粗俗的版本,如下所示:
def score
count = 0
total_score = 0
scorecards.each do |s|
(c, t) = s.measure_calc
count = count + c
total_score = total_score + t
end
(c, t) = measure_calc
count = count + c
total_score = total_score + t
return total_score / count
end
def measure_calc
count = 0
total_score = 0
measures.each do |m|
count = count + 1
total_score = total_score + m.score
end
return count, total_score
end
https://stackoverflow.com/questions/51141329
复制相似问题