2013-07-15 1 views
1

제목이 명확하지 않은지 확실하지 않습니다. 나는 내가 찾는 대답의 종류가 무엇인지에 대해 너무 확신하지 못한다. 나는 수색과 수색을 해왔고 그 해답을 찾는 것처럼 보이지 않습니다."유연한"(?) 레일 데이터베이스

여기 내가하고 싶은 작업은 다음과 같습니다

나는 사용자가 X 세트로 구성된 운동을 만들려면, 담당자, 그리고 X 타입 X.

제가 예를 들어 알 수 있습니다.

create_table "workouts", :force => true do |t| 
    t.string "workout name" 
    t.integer "sets" 
    t.integer "reps" 
    t.string "type" 
end 

그러나이 방법

은 만 세트의 기록 할 한 종류/운동을 할 수 있습니다.

복수형 세트/운동 유형을 추가하고 싶습니다.

예를 들어;

workout name: monday morning 
sets: 2 reps: 4 type: "bicep curl" 
sets: 4 reps 23 type: "bench press" 
etc.. 

제 설명이 너무 불분명하거나 혼란 스러울지라도 지적 해주십시오. 모든 도움을 주시면 감사하겠습니다. 보시니 고마워요!

+1

: // guides.rubyonrails.org/association_basics.html#polymorphic-associations? – vee

+0

@vinodadhikary, 여기에 다형성 연관은 필요 없습니다. 간단한'has_many'와'belongs_to'만으로도 충분합니다. – Mischa

답변

2

당신은 테이블 workoutsworkout_details을 만들고 그들을 함께 연결해야합니다

create_table "workouts", :force => true do |t| 
    t.string :name 
end 

create_table "workout_details", :force => true do |t| 
    t.references :workout 
    t.integer :sets 
    t.integer :reps 
    t.string  :type 
end 

을 그리고 당신의 모델은 다음과 같이 보일 것이다 :이처럼 설정하면

class Workout < ActiveRecord::Base 
    has_many :workout_details 
end 

class WorkoutDetail < ActiveRecord::Base 
    belongs_to :workout 
end 

, 당신이 만듭니다 여러 운동 세부 정보 :

bicep_curl = WorkoutDetail.new 
bicep_curl.type = 'bicep curl' 
bicep_curl.sets = 2 
bicep_curl.reps = 4 
bicep_curl.save 

bench_press = WorkoutDetail.new 
bench_press.type = 'bench press' 
bench_press.sets = 4 
bench_press.reps = 23 
bench_press.save 

운동에 그들을 위해 dd :

workout = Workout.new 
workout.name = 'monday morning' 
workout.workout_details << bicep_curl 
workout.workout_details << bench_press 
workout.save 

이 운동을 검색하려면, 당신은이 작업을 수행 할 수 있습니다

workout = Workout.where(:name => 'monday morning').first 
puts "workout name: #{workout.name}" 

workout.workout_details.each do |wd| 
    puts "sets: #{wd.sets} reps: #{wd.reps} type: #{wd.type}" 
end 

출력 :

당신이 다형성 협회 HTTP를 원하는 내 이해를 바탕으로
workout name: monday morning 
sets: 2 reps: 4 type: bicep curl 
sets: 4 reps: 23 type: bench press 
+0

큰 설명과 답변을 해주셔서 감사합니다! :) –

+0

반갑습니다. 내가 도울 수있어서 기쁩니다. – Mischa