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 に答える