liq*_*she 0 ruby activerecord ruby-on-rails
我有一个成绩模型,我需要从中提取两列的平均值 - 准确性和时间。I\xe2\x80\x99m 使用以下查询将两个值放在一起,而不是查询模型两次。
\n\nGrade.where(student_id: 25).pluck('avg(accuracy), avg(time)')\nRun Code Online (Sandbox Code Playgroud)\n\n我得到了两个值,但它们的格式如下,我不明白:
\n\n[[#<BigDecimal:7f9c5a890410,\xe2\x80\x998.0\xe2\x80\x99,9(18)>, #<BigDecimal:7f9c5a8903c0,\xe2\x80\x9910.0\xe2\x80\x99,9(18)>]]\nRun Code Online (Sandbox Code Playgroud)\n\n如何从中提取我需要的值?即 avg_accuracy = 8.0 和 avg_time = 10.0
\n\n我是 Ruby、Rails、ActiveRecord 的新手。我很感激你的帮助。
\ngrades = Grade.where(student_id: 25, class_id: 123).pluck('avg(accuracy), avg(time)').first\nRun Code Online (Sandbox Code Playgroud)\n\n应得
\n\n[#<BigDecimal:7f9c5a890410,\xe2\x80\x998.0\xe2\x80\x99,9(18)>, #<BigDecimal:7f9c5a8903c0,\xe2\x80\x9910.0\xe2\x80\x99,9(18)>]\nRun Code Online (Sandbox Code Playgroud)\n\n现在将它们转换为简单的浮点数。
\n\ngrades.map!(&:to_f)\nRun Code Online (Sandbox Code Playgroud)\n\n应得
\n\n[8.0, 10.0]\nRun Code Online (Sandbox Code Playgroud)\n