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

しかし、この方法では、1 種類のセットしか書き込み/トレーニングできません。

複数のタイプのセット/ワークアウトを追加できる機能が必要です。

たとえば、

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

私の説明が不明瞭すぎる場合、または単に混乱している可能性がある場合は、遠慮なく指摘してください。すべての助けに感謝します。ご覧いただきありがとうございます!

4

1 に答える 1

2

テーブルを作成し、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

それらをワークアウトに追加します。

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
于 2013-07-15T02:08:45.957 に答える