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