Guest User

Untitled

a guest
Feb 22nd, 2013
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 2.19 KB | None | 0 0
  1. #updates
  2.  
  3. #params
  4.   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"}}}}}}}
  5.  
  6. #workout controller create action
  7.   def create
  8.     #creating the workout
  9.     current_user_workouts = current_user.workouts
  10.     params[:workout].each do |k,v|
  11.       @workout = current_user_workouts.create(v.except("workout_entries"))
  12.       if @workout.save
  13.         v["workout_entries"].each do |k2, v2|
  14.           #creating the workout entries
  15.           @workout_entry = @workout.workout_entries.create(v2.except("entry_details"))
  16.           v2["entry_details"].each do |k3, v3|
  17.             #creating the entry details
  18.             @workout_entry.entry_details.create(v3)
  19.           end
  20.         end
  21.         render :json => @workout
  22.       else
  23.         render :json => { :errors => @workout.errors.full_messages }, :status => 422
  24.       end
  25.     end
  26.   end
  27.  
  28. #remove accepts_nested_attributes_for in the workout and workout_entry models
  29.  
  30. class Workout < ActiveRecord::Base
  31.  
  32.   has_many :workout_entries, dependent: :destroy, :inverse_of => :workout
  33.   attr_accessible :id, :name, :note, :unit, :workout_entries
  34.   belongs_to :user
  35.  
  36.   validates_presence_of :name #, :with => /\A\Z/
  37.   validates_presence_of :unit, :inclusion => %w(kg lb)
  38.   validates_associated :workout_entries
  39.  
  40.   default_scope order("created_at DESC")
  41.  
  42. end
  43.  
  44. class WorkoutEntry < ActiveRecord::Base
  45.  
  46.   belongs_to :workout
  47.   belongs_to :exercise
  48.   has_many :entry_details, dependent: :destroy, :inverse_of => :workout_entry
  49.  
  50.   attr_accessible :workout_id, :workout_entry_number,:exercise_id, :entry_details
  51.  
  52.   validates :exercise_id, presence: true, numericality: {only_integer: true}, :inclusion => { :in => 1..790 }
  53.   validates :workout_id, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
  54.   validates :workout_entry_number, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
  55.  
  56. end
Advertisement
Add Comment
Please, Sign In to add comment