0

考虑到这个模型

User = has_many :grades (table: user_id)
Grade = has_many :subjects (table: grade_id, name)
Subject = has_many :values (table: subject_id,value)
User.find(:first, :include => {:grades =>{:subjects => :value}})

我如何选择所有成绩,然后选择主题并获得主题值的总和?

4

1 回答 1

0

如果您只想获取主题值(并且是一个数字),您可以这样做

User.find(:first).grades.map(&:subjects).flatten.reduce(:+)

那应该选择第一个用户,然后给你一个包含他们所有成绩的数组,然后将每个成绩的主题映射到数组中,然后展平数组,然后将所有值加在一起。

于 2013-10-29T07:49:53.477 回答