0

我需要转换一个相对简单的查询,以在 Rails/HAML 中设置的表中显示给定用户的总测验平均值。我们让用户参加测验,记录分数,并显示每个测验的平均值。我们现在想要所有测验的总平均值。简单的:

SELECT (ROUND(AVG(`score`*100), 1)) FROM `quiz_results` WHERE `user_id`=$user

结果需要显示在已经设置好的表格单元格中,但我无法弄清楚。

也许这条线会有所帮助。它是预先存在的代码,用于计算该用户的特定测验的平均值:

%td.separate="#{(((lesson.quiz_results.average('score', :conditions => "user_id = #{@user.id}")) * 100).to_i)}%"

我有 Rails 2.3.x。

4

1 回答 1

0

好吧,正如我现在所看到的 - 你需要的只是删除特定的测验限制,这是由关联使用强加的lesson.quiz_results- 而不是只使用模型类,这很可能是QuizResult.

而且,您现有的代码中还有一个小错误 -.to_i将四舍五入,您应该使用.round. 看到不同:

irb(main):002:0> 1.6.to_i
=> 1
irb(main):003:0> 1.6.round
=> 2

所以,完整的代码应该是:

(QuizResult.average('score', :conditions => "user_id = #{@user.id}") * 100).round

(我还删除了一些不必要的括号)

于 2012-08-25T06:52:14.913 回答