Class TaborOverall
In: app/models/competitions/tabor_overall.rb
Parent: Overall

Mount Tabor Overall Series results

Methods

Public Class methods

[Source]

   # File app/models/competitions/tabor_overall.rb, line 3
3:   def TaborOverall.parent_name
4:     "Mt. Tabor Series"
5:   end

Public Instance methods

By default, does nothing. Useful to apply rule like:

  • Any results after the first four only get 50-point bonus
  • Drop lowest-scoring result

[Source]

    # File app/models/competitions/tabor_overall.rb, line 26
26:   def after_create_competition_results_for(race)
27:     race.results.each do |result|
28:       if result.scores.size > 5
29:         result.scores.sort! { |x, y| y.points <=> x.points }
30:         lowest_score = result.scores.last
31:         result.scores.destroy(lowest_score)
32:         # Rails destroys Score in database, but doesn't update the current association
33:         result.scores(true)
34:       end
35:     end
36:   end

[Source]

    # File app/models/competitions/tabor_overall.rb, line 11
11:   def create_races
12:     races.create! :category => Category.find_or_create_by_name("Fixed Gear")
13:     races.create! :category => Category.find_or_create_by_name("Category 4 Women")
14:     races.create! :category => Category.find_or_create_by_name("Masters Women")
15:     races.create! :category => Category.find_or_create_by_name("Senior Women")
16:     races.create! :category => Category.find_or_create_by_name("Masters Men")
17:     races.create! :category => Category.find_or_create_by_name("Category 4 Men")
18:     races.create! :category => Category.find_or_create_by_name("Category 5 Men")
19:     races.create! :category => Category.find_or_create_by_name("Category 3 Men")
20:     races.create! :category => Category.find_or_create_by_name("Senior Men")
21:   end

[Source]

   # File app/models/competitions/tabor_overall.rb, line 7
7:   def default_bar_points
8:     1
9:   end

[Source]

    # File app/models/competitions/tabor_overall.rb, line 38
38:   def point_schedule
39:     [ 0, 100, 70, 50, 40, 36, 32, 28, 24, 20, 16, 15, 14, 13, 12, 11 ]
40:   end

Apply points from point_schedule, and split across team

[Source]

    # File app/models/competitions/tabor_overall.rb, line 43
43:   def points_for(source_result, team_size = nil)
44:     points = point_schedule[source_result.place.to_i].to_f
45:     if source_result.last_event?
46:       points = points * 2
47:     end
48:     points
49:   end

[Validate]