Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #updates
- #params
- Parameters: {"workout"=>{"0"=>{"unit"=>"kg", "name"=>"2013-02-21T23:19:56", "note"=>"", "workout_entries"=>{"0"=>{"workout_entry_number"=>"1", "exercise_id"=>"2", "entry_details"=>{"0"=>{"set_number"=>"1", "weight"=>"32", "reps"=>"6"}}}, "1"=>{"workout_entry_number"=>"2", "exercise_id"=>"3", "entry_details"=>{"0"=>{"set_number"=>"1", "weight"=>"12", "reps"=>"43"}}}}}}}
- #workout controller create action
- def create
- #creating the workout
- current_user_workouts = current_user.workouts
- params[:workout].each do |k,v|
- @workout = current_user_workouts.create(v.except("workout_entries"))
- if @workout.save
- v["workout_entries"].each do |k2, v2|
- #creating the workout entries
- @workout_entry = @workout.workout_entries.create(v2.except("entry_details"))
- v2["entry_details"].each do |k3, v3|
- #creating the entry details
- @workout_entry.entry_details.create(v3)
- end
- end
- render :json => @workout
- else
- render :json => { :errors => @workout.errors.full_messages }, :status => 422
- end
- end
- end
- #remove accepts_nested_attributes_for in the workout and workout_entry models
- class Workout < ActiveRecord::Base
- has_many :workout_entries, dependent: :destroy, :inverse_of => :workout
- attr_accessible :id, :name, :note, :unit, :workout_entries
- belongs_to :user
- validates_presence_of :name #, :with => /\A\Z/
- validates_presence_of :unit, :inclusion => %w(kg lb)
- validates_associated :workout_entries
- default_scope order("created_at DESC")
- end
- class WorkoutEntry < ActiveRecord::Base
- belongs_to :workout
- belongs_to :exercise
- has_many :entry_details, dependent: :destroy, :inverse_of => :workout_entry
- attr_accessible :workout_id, :workout_entry_number,:exercise_id, :entry_details
- validates :exercise_id, presence: true, numericality: {only_integer: true}, :inclusion => { :in => 1..790 }
- validates :workout_id, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
- validates :workout_entry_number, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
- end
Advertisement
Add Comment
Please, Sign In to add comment