1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-04 13:43:48 +00:00

Added a finished_at column on matches, created a callback to updated that only if finished changes and is 1, and display that on the match stats page.

This commit is contained in:
2025-01-22 17:01:06 -05:00
parent f6bc7aa1a4
commit 5114ed7b08
8 changed files with 98 additions and 7 deletions

View File

@@ -5,6 +5,11 @@ class Match < ApplicationRecord
has_many :wrestlers, :through => :weight
has_many :schools, :through => :wrestlers
validate :score_validation, :win_type_validation, :bracket_position_validation, :overtime_type_validation
# Callback to update finished_at when finished changes
# for some reason saved_change_to_finished? does not work on before_save like it does for after_update
before_save :update_finished_at, if: -> { will_save_change_to_attribute?(:finished) }
after_update :after_finished_actions, if: -> {
saved_change_to_finished? ||
saved_change_to_winner_id? ||
@@ -20,7 +25,7 @@ class Match < ApplicationRecord
if self.w2
wrestler2.touch
end
if self.reload.finished == 1 && self.reload.winner_id != nil
if self.finished == 1 && self.winner_id != nil
if self.mat
self.mat.assign_next_match
end
@@ -282,4 +287,10 @@ class Match < ApplicationRecord
""
end
end
private
def update_finished_at
self.finished_at = finished == 1 ? Time.current.utc : nil
end
end

View File

@@ -18,7 +18,7 @@ class Wrestler < ApplicationRecord
def last_finished_match
all_matches.select{|m| m.finished == 1}.sort_by{|m| m.bout_number}.last
all_matches.select{|m| m.finished == 1}.sort_by{|m| m.finished_at}.last
end
def total_team_points