У меня есть статистическая модель:
Stat(id: integer, points: float, user_id: integer, match_id: integer)
прямо сейчас вот мой код:
stat = Stat.where.not(points: 0).group(:user_id).sum("points")
мне нужно, чтобы получить сумму очков каждого игрока, а затем узнать, кактогда у них будет много матчей (сумма очков / количество матчей).С кодом выше я могу получить только сумму каждого игрока.
РЕДАКТИРОВАТЬ
Stat(id: integer, points: float, user_id: integer, match_id: integer, team_id: integer)
Для модели матча:
Match(id: integer, team_a_id: integer, team_b_id: integer)
РЕДАКТИРОВАТЬ
Вот мой код сейчас:
stat.each do |f|
new_value = (f.sum_points.to_f / f.matches_count.to_f)
f.sum_points = new_value.round(2)
a << f
end
new_stat = a.sort_by(&:sum_points).reverse.first(10).flatten
Мне нужно изменить значение sum_points
для каждой информации, что если я получу много данных, чтобызанять время, есть ли способ минимизировать это?Что мне нужно, так это первый топ 10.