通过层次结构求取平均和

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (33)

我正在构建一个Rails 5应用程序。在这个应用程序中,我有两个对象/模型。记分卡和度量衡。

记分卡可以有许多记分卡(儿童)使用记分卡。_身份证。记分卡也可以有许多措施。每个度量都有一个得分属性,保存为浮点数。

这个层次可以分为两个层次:

Scorecard A
-> Scorecard B
   -> Measure A (score 7.5)
   -> Measure B (score 8.0)

我想得到A和B对记分卡A对象的平均分数。

如果我得到记分卡B,我可以很容易地从测量A和B得到平均分数使用下面的方法,但我需要它通过顶级对象(记分卡A)。

def score
   self.measures.sum(:score) / self.measures.count
end
提问于
用户回答回答于

你需要迭代每一个计分卡和度量,并收集总分和计数,以便在最后进行计算。快速而肮脏的版本如下所示:

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

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券