Commit 1b38168
Changed files (16)
app
assets
javascripts
views
views
workouts
spec
controllers
models
app/assets/javascripts/views/workout_view.js.coffee
@@ -15,8 +15,8 @@ class Stronglifters.WorkoutView extends Ractive
@saveSet(@get(event.keypath))
saveSet: (set) ->
- @patch "/exercise_sets/#{set.id}",
- exercise_set:
+ @patch "/sets/#{set.id}",
+ set:
actual_repetitions: set.actual_repetitions
patch: (url, payload) ->
app/controllers/exercise_sets_controller.rb
@@ -1,13 +0,0 @@
-class ExerciseSetsController < ApplicationController
- def update
- exercise_session = current_user.exercise_sets.find(params[:id])
- exercise_session.update!(secure_params)
- render json: {}
- end
-
- private
-
- def secure_params
- params.require(:exercise_set).permit(:actual_repetitions)
- end
-end
app/controllers/sets_controller.rb
@@ -0,0 +1,13 @@
+class SetsController < ApplicationController
+ def update
+ set = current_user.sets.find(params[:id])
+ set.update!(secure_params)
+ render json: {}
+ end
+
+ private
+
+ def secure_params
+ params.require(:set).permit(:actual_repetitions)
+ end
+end
app/controllers/workouts_controller.rb
@@ -33,7 +33,7 @@ class WorkoutsController < ApplicationController
end
def recent_workouts
- current_user.workouts.recent.includes(:routine, :program, exercise_sets: [:exercise])
+ current_user.workouts.recent.includes(:routine, exercise_sets: [:exercise])
end
def find_routine(routine_id)
app/models/progress.rb
@@ -15,6 +15,6 @@ class Progress
end
def sets
- workout.exercise_sets.where(exercise: exercise).order(:created_at)
+ workout.sets.where(exercise: exercise).order(:created_at)
end
end
app/models/training_history.rb
@@ -33,7 +33,7 @@ class TrainingHistory
def to_line_chart
user.workouts.inject({}) do |memo, workout|
memo[workout.occurred_at] =
- workout.exercise_sets.where(exercise: exercise).maximum(:target_weight)
+ workout.sets.where(exercise: exercise).maximum(:target_weight)
memo
end
end
@@ -41,7 +41,7 @@ class TrainingHistory
private
def sets
- user.exercise_sets.where(exercise: exercise)
+ user.sets.where(exercise: exercise)
end
def successful_sets
app/models/user.rb
@@ -14,6 +14,7 @@ class User < ActiveRecord::Base
after_create :create_profile!
before_validation :lowercase_account_fields
+ alias_method :sets, :exercise_sets
def time_zone
@time_zone ||= ActiveSupport::TimeZone[profile.read_attribute(:time_zone)]
app/models/workout.rb
@@ -6,6 +6,7 @@ class Workout < ActiveRecord::Base
has_many :exercise_sets, dependent: :destroy
accepts_nested_attributes_for :exercise_sets
delegate :name, to: :routine
+ alias_method :sets, :exercise_sets
scope :recent, -> { order(occurred_at: :desc) }
@@ -15,24 +16,20 @@ class Workout < ActiveRecord::Base
end
def train(exercise, target_weight, repetitions:, set: nil)
- exercise_set =
- if set.present? && exercise_sets.where(exercise: exercise).at(set).present?
- exercise_sets.where(exercise: exercise).at(set)
+ set =
+ if set.present? && sets.where(exercise: exercise).at(set).present?
+ sets.where(exercise: exercise).at(set)
else
- exercise_sets.build(
+ sets.build(
exercise: exercise,
target_repetitions: program.recommended_reps_for(user, exercise)
)
end
- exercise_set.update!(actual_repetitions: repetitions, target_weight: target_weight)
- exercise_set
+ set.update!(actual_repetitions: repetitions, target_weight: target_weight)
+ set
end
def progress_for(exercise)
Progress.new(self, exercise)
end
-
- def sets
- exercise_sets
- end
end
app/views/workouts/_workout.jbuilder
@@ -1,10 +1,10 @@
json.id workout.id
json.body_weight workout.body_weight
json.routine_name workout.routine.name
-json.exercises workout.exercise_sets.order(:created_at).group_by(&:exercise) do |exercise, exercise_sets|
+json.exercises workout.sets.order(:created_at).group_by(&:exercise) do |exercise, sets|
json.id exercise.id
json.name exercise.name
- json.sets exercise_sets.sort_by(&:created_at) do |set|
+ json.sets sets.sort_by(&:created_at) do |set|
json.id set.id
json.target_weight set.target_weight
json.target_repetitions set.target_repetitions
app/views/workouts/new.html.erb
@@ -12,10 +12,10 @@
<legend><%= Workout.human_attribute_name(:body_weight) %></legend>
<%= f.number_field :body_weight %>
</fieldset>
- <% @workout.exercise_sets.group_by(&:exercise).each do |exercise, exercise_sets| %>
+ <% @workout.sets.group_by(&:exercise).each do |exercise, sets| %>
<fieldset>
<legend><%= exercise.name %></legend>
- <% exercise_sets.each.with_index(1) do |set, index| %>
+ <% sets.each.with_index(1) do |set, index| %>
<%= f.fields_for :exercise_sets, set do |s| %>
<fieldset name="<%= exercise.slug %>-<%= index %>">
<legend>Set</legend>
config/locales/en.yml
@@ -40,7 +40,6 @@ en:
formats:
short: "%a, %d %b %Y"
add: Add
- back_html: '« Back'
done: "I'm Done"
save: Save
search: Search
config/routes.rb
@@ -2,7 +2,7 @@ Rails.application.routes.draw do
root "sessions#new"
resources :sessions, only: [:new, :create, :destroy]
resources :registrations, only: [:new, :create]
- resources :exercise_sets, only: [:update]
+ resources :sets, only: [:update]
resources :workouts, only: [:index, :new, :create, :edit]
resources :programs, only: [:show]
resources :profiles, only: [:new, :create, :show, :edit, :update], constraints: { id: /[^\/]+/ }
spec/controllers/exercise_sets_controller_spec.rb → spec/controllers/sets_controller_spec.rb
@@ -1,6 +1,6 @@
require "rails_helper"
-describe ExerciseSetsController do
+describe SetsController do
let(:user) { create(:user) }
before :each do
@@ -13,14 +13,14 @@ describe ExerciseSetsController do
it "records the exercise" do
workout.update!(occurred_at: DateTime.now, body_weight: 225)
- exercise_set = workout.exercise_sets.first
+ set = workout.sets.first
- xhr :patch, :update, id: exercise_set.id, exercise_set: {
+ xhr :patch, :update, id: set.id, set: {
actual_weight: 315,
actual_repetitions: 5,
}
expect(response).to have_http_status(:ok)
- expect(exercise_set.reload.actual_repetitions).to eql(5)
+ expect(set.reload.actual_repetitions).to eql(5)
end
end
end
spec/controllers/workouts_controller_spec.rb
@@ -67,7 +67,7 @@ describe WorkoutsController do
workout = user.workouts.last
expect(workout.body_weight).to eql(body_weight)
expect(workout.routine).to eql(routine_b)
- expect(workout.exercise_sets.count).to eql(1)
+ expect(workout.sets.count).to eql(1)
expect(response).to redirect_to(edit_workout_path(user.workouts.last))
end
end
spec/models/csv/import_spec.rb
@@ -48,9 +48,9 @@ describe Csv::Import do
expect(workout.occurred_at).to eql(expected_date)
expect(workout.routine).to eql(routine_a)
expect(workout.body_weight).to eql(205.0.lbs)
- expect(workout.exercise_sets.count).to eql(15)
+ expect(workout.sets.count).to eql(15)
expect(
- workout.exercise_sets.map { |x| x.exercise.name }.uniq
+ workout.sets.map { |x| x.exercise.name }.uniq
).to match_array(["Squat", "Bench Press", "Barbell Row"])
end
spec/models/workout_spec.rb
@@ -71,7 +71,7 @@ describe Workout, type: :model do
subject.train(squat, target_weight, repetitions: 5, set: 0)
subject.train(squat, target_weight, repetitions: 5, set: 0)
- expect(subject.exercise_sets.count).to eql(1)
+ expect(subject.sets.count).to eql(1)
end
end