master
1class Program < ApplicationRecord
2 STRONG_LIFTS = "StrongLifts 5×5"
3 has_many :exercises, through: :routines
4 has_many :routines, inverse_of: :program
5 has_many :recommendations, through: :routines
6
7 before_save do
8 self.slug = name.parameterize
9 end
10
11 def to_param
12 slug
13 end
14
15 def next_routine_after(routine)
16 routines.where.not(name: routine.name).first
17 end
18
19 def prepare_sets_for(user, exercise)
20 recommendation = recommendation_for(user, exercise)
21 recommendation.prepare_sets
22 end
23
24 def recommendation_for(user, exercise)
25 UserRecommendation.new(user, exercise, self)
26 end
27
28 class << self
29 def stronglifts
30 Program.find_by(name: STRONG_LIFTS)
31 end
32 end
33end