Я искал по сайту и не смог найти именно то, что искал.
Я работал над образцом быстрого маленького рельса, в котором у меня есть Teams
, у которого есть _many Users
. У каждого пользователя есть несколько записей о шагах, и каждый шаг содержит количество шагов и прикрепленный скриншот.
Я хочу отобразить 5 лучших групп с наибольшим количеством шагов (объединенные шаги всех пользователей в группе).
Это всего лишь хобби-проект, и возможно, что он не будет следовать по правильному пути, но зацикливание не показалось мне подходящим, поэтому я просто хотел выложить его и посмотреть, есть ли лучший способ.
Это то, что я сделал.
/app/controllers/concerns/application_helper.rb
module ApplicationHelper
def topfiveteams
@topfiveteamswithcount
@totalcount = 0
@all_teamshash = {}
Team.all.each do |team| ---> Loop 1
teamcount = 0
team.users.each do |user| ---> Loop 2
userstepcount = 0
user.steps.each do |step| ---> Loop 3
userstepcount += step.stepcount
end
teamcount += userstepcount
end
@all_teamshash[team.teamname] = teamcount
end
h = @all_teamshash.sort_by {|_key, value| value}.reverse.to_h
@topfiveteamswithcount = h.first(5).to_h
end
end
Есть ли более чистый путь в RoR?