我正在构建Rails 5应用程序。 在这个应用程序中,我得到了两个对象/模型。记分卡和度量。
一个记分卡可以使用scorecard_id拥有许多记分卡(子代)。 计分卡也可以具有许多度量。每个小节都有一个保存为浮点数的得分属性。
此层次结构可以分为两个级别:
Scorecard A
-> Scorecard B
-> Measure A (score 7.5)
-> Measure B (score 8.0)
我想从度量A和B中获得记分卡A对象的平均分数。
如果我获得了记分卡B,我可以使用以下方法轻松地从Measure A和B获得平均得分,但是我需要通过顶级对象(记分卡A)来获得它。
def score
self.measures.sum(:score) / self.measures.count
end
答案 0 :(得分:0)
您需要遍历每个记分卡并进行度量,并收集总分和计数,以便最终进行计算。一个快速而肮脏的版本看起来像这样:
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