我是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总和/课程数。我怎么能这样做?
答案 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)