计算Ruby on Rails中列值的平均值

时间:2016-12-01 01:55:09

标签: ruby-on-rails

我是Ruby on Rails的新手。我有一个简介模型,其中有很多课程。

create_table "profiles", force: :cascade do |t|
   t.string   "pname"
   t.float    "current_gpa"
end

create_table "courses", force: :cascade do |t|
   t.integer  "course_number"
   t.float    "gpa"
end

我想计算平均gpa:current_gpa =所取课程的gpa总和/课程数。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

你应该考虑阅读一些文档 - 很明显它可以快速得到答案,但有时文档会引导你找到你不知道要找或要求的东西。

尽管如此,最快的方法是使用average

profile.courses.average(:gpa)

这会给你一个平均值。或者你可以做很长的事情,如果由于某种原因你需要在两者之间进行修改。

profile.courses.sum(:gpa) / profile.courses.count

答案 1 :(得分:1)

此处的附加说明...平均值返回浮点数或BigDecimal,通常以十进制表示法表示。这可能会造成混淆,并且可能不是您想要的。您可能会探索添加类似以下内容的内容:.to_int,.to_f,.truncate,.round等...

path

答案 2 :(得分:0)

您可以使用ActiveRecord::Calculations average

profile.courses.average(:gpa)