你應該創建一個表workouts
和workout_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
和a他們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
輸出:
workout name: monday morning
sets: 2 reps: 4 type: bicep curl
sets: 4 reps: 23 type: bench press
根據我的理解,你想多態關聯的http:// guides.rubyonrails.org/association_basics.html#polymorphic-associations? – vee
@vinodadhikary,這裏不需要多態關聯。一個簡單的'has_many'和'belongs_to'就足夠了。 – Mischa