Correctly order participants
All checks were successful
CI / scan_ruby (push) Successful in 19s
CI / scan_js (push) Successful in 12s
CI / lint (push) Successful in 12s
CI / test (push) Successful in 31s

This commit is contained in:
sto
2025-06-18 14:49:16 +02:00
parent a33f3ff4de
commit 194c126c90
6 changed files with 31 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ class ContestsController < ApplicationController
@title = I18n.t("contests.show.title", name: @contest.name)
@action_name = t("helpers.buttons.edit")
@action_path = edit_contest_path(@contest)
@contestants = @contest.contestants.order(:name)
@contestants = @contest.contestants.sort_by { |contestant| [ -contestant.completions.size, contestant.time_seconds ] }
@puzzles = @contest.puzzles.order(:id)
@messages = @contest.messages.order(:time_seconds)
set_badges
@@ -66,7 +66,7 @@ class ContestsController < ApplicationController
authorize @contest
@title = I18n.t("contests.scoreboard.title", name: @contest.name)
@contestants = @contest.contestants.order(:name)
@contestants = @contest.contestants.sort_by { |contestant| [ -contestant.completions.size, contestant.time_seconds ] }
@puzzles = @contest.puzzles.order(:id)
render :scoreboard
end

View File

@@ -6,6 +6,7 @@
# display_time :string
# email :string
# name :string
# time_seconds :integer
# created_at :datetime not null
# updated_at :datetime not null
# contest_id :integer not null
@@ -22,5 +23,14 @@ class Contestant < ApplicationRecord
belongs_to :contest
has_many :completions
before_create :initialize_time_seconds
validates :name, presence: true
validates :time_seconds, presence: true
private
def initialize_time_seconds
self.time_seconds = 0
end
end