Class: TournamentParticipation
- Inherits:
-
Sequel::Model
- Object
- Sequel::Model
- TournamentParticipation
- Defined in:
- lib/opensprints-core/tournament_participation.rb
Instance Method Summary collapse
- #best_time ⇒ Object
- #eliminate ⇒ Object
- #losses ⇒ Object
- #race_participations ⇒ Object
- #rank ⇒ Object
Instance Method Details
#best_time ⇒ Object
5 6 7 8 9 |
# File 'lib/opensprints-core/tournament_participation.rb', line 5 def best_time best = self.db[:race_participations].filter(:racer_id => racer.id).exclude(:finish_time => nil).join(:races, :tournament_id => tournament.id).filter(:raced => true).order(:finish_time).select(:finish_time).first best[:finish_time] if best end |
#eliminate ⇒ Object
23 24 25 |
# File 'lib/opensprints-core/tournament_participation.rb', line 23 def eliminate self.update(:eliminated => true) end |
#losses ⇒ Object
16 17 18 19 20 21 |
# File 'lib/opensprints-core/tournament_participation.rb', line 16 def losses RaceParticipation.filter(:racer_id => racer.id).join(:races, :tournament_id => tournament.id).group(:id).all.select do |rp| winner = rp.race ? rp.race.winner : nil winner && (winner.racer.pk != self.racer.pk) end.length end |
#race_participations ⇒ Object
27 28 29 |
# File 'lib/opensprints-core/tournament_participation.rb', line 27 def race_participations RaceParticipation.filter(:racer_id => racer.id).join(:races, :tournament_id => tournament.id).group(:id).all end |
#rank ⇒ Object
11 12 13 14 |
# File 'lib/opensprints-core/tournament_participation.rb', line 11 def rank standings = self.tournament.tournament_participations.sort_by{|tp|tp.best_time||Infinity} standings.index(self)+1 end |