2010-03-05 6 views
2

배경 : 나는 선수들과 함께 응용 프로그램을 가지고 있는데, 각 운동 선수 (선수 모델)는 운동을 할당받을 수 있습니다 (운동 모델, 모델을 통한 workout_assignment).질량 지정 방법 개별적으로 편집

문제점 : 처음에는 workout_assignment를 통해 많은 운동을하는 운동 선수와의 연결을 사용하고 workout_assignment를 통해 많은 운동 선수가있는 운동이 나에게 잘 작동한다고 생각했습니다. 그러나 내가 이런 식으로한다면 50 명의 운동 선수에게 운동을 할당하면 모두 동일한 운동 기록을 참조하게됩니다. 나는 코치 (운동을 배정한 사람)가 50 명의 운동 선수에게 동일한 운동을 할당 할 수 있기를 원하지만 원하는 경우 (운동 선수를 위해 맞춤 설정) 하나씩 변경할 수 있어야합니다. 누구든지이 문제에 접근하는 방법에 대한 조언을 받았습니까? 운동 사본 50 부를 작성하고 각각을 사용자에게 할당해야합니까, 별도의 운동이있을 경우 모델을 통해 실제로 workout_assignment가 필요한가요?

조언 해 주셔서 감사합니다.

스키마

create_table "athletes", :force => true do |t| 
    t.string "name" 
    t.string "username" 
    t.string "password" 
    t.string "sport" 
    t.text  "notes" 
    t.integer "coach_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "crypted_password" 
    t.string "password_salt" 
    t.string "persistence_token" 
    end 

    create_table "coaches", :force => true do |t| 
    t.string "name" 
    t.string "username" 
    t.string "password" 
    t.string "address" 
    t.string "city" 
    t.string "state" 
    t.string "zipcode" 
    t.string "phone" 
    t.string "sports" 
    t.integer "experience" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "crypted_password" 
    t.string "password_salt" 
    t.string "persistence_token" 
    end 

create_table "workout_assignments", :force => true do |t| 
    t.integer "athlete_id" 
    t.integer "workout_id" 
    t.date  "date_assigned" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "workouts", :force => true do |t| 
    t.string "name" 
    t.string "type" 
    t.integer "coach_id" 
    t.text  "description" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "category_id" 
    end 

모델 조합 :

class Athlete < ActiveRecord::Base 
    belongs_to :coach 
    has_many :workouts, :through => :workout_assignments 
end 

class Workout < ActiveRecord::Base 
    has_many :athletes, :through => :workout_assignments 
    belongs_to :category 
end 

class WorkoutAssignment < ActiveRecord::Base 
    belongs_to :workout 
    belongs_to :athlete 
end 

class Coach < ActiveRecord::Base 
    has_many :athletes 
    has_many :workouts 
end 
+0

운동 기록은 어떻게 연관되어 있습니까?여러분의 모델과 모든 has_many' 또는'belongs_to' 관계를 가진 스키마를 게시하거나'athlete_id','workout_id' 및 다른 필드를 모두 게시 할 수 있다면 도움이 될 것입니다. –

+0

좋아, 원래 게시물에 추가했습니다. 나는 이것을 설정하는 가장 좋은 방법으로 고심하고 있으므로 선수들에게 운동을 정상적으로 할당 할 수는 있지만 한 번에 여러 선수에게 할당 할 수도 있습니다. (그러나 그 후에 개별적으로 변경할 수 있습니다.) 도와 줘서 고마워! –

+0

이것을 레일스상의 루비보다는 데이터베이스의 것으로 태그를 붙일 수 있습니다. – tybro0103

답변

2

a를 갖고 관계 속하는 사용하는 이유 (역수들을 통해 관계를 통해 또는 기타)은 양쪽에있는 객체를 재사용 할 수있다 .

풍부한 결합 모델을 사용 해본 적이 있습니까? workout_assignments 모델은 이미 "date_assigned"항목이있는 것으로 보입니다. 이론은 조인 모델이 해당 지정과 관련된 데이터를 포함한다는 것입니다. 그렇게하면 각 공통 운동 요소의 사본 하나만 필요할 것이고 운동 할당 모델을 사용하여 개별 지침을 저장할 수 있습니다.

선수에 대한 특별 지시를 포함 workout_assignments 적응 : 여기

내가이 구현 제안 방법은 다음과 같습니다. workout_assignments 테이블에 열을 추가하기 만하면된다. 나는 이것을 special_instructions이라고 부르 겠지만, 당신이 원했던 것을 호출 할 수있다. 새로운 마이그레이션의 최대 방법에서

:

그것에 대해이야
add_column :workout_assignments, :special_instructions, :string 

. 선수/코치에게 표시 할 때 운동 설명과 함께 특별 지침을 표시해야합니다. 운동 대신에 workout_assignments를 참조하는 전환을 쉽게하기 위해 할 수있는 일이 있습니다.

has_many 연관에 대한 위임, 사용자 지정 접근 자 및 : include 옵션의 사용법을 살펴보십시오. 이 모델을 더 잘 작동시키는 방법에 대한 영감을 얻으십시오. 아이디어는 운동 과제를로드 할 때마다 관련 운동을 열망 할 수 있다는 것입니다.

위임은 다른 옵션에 메서드를 전달할 수있는 기술입니다. 본질적으로 두 모델을 병합하는 모습을 보여줍니다. 이 간단한 년대에하는 것은 다음과 같은 형태 형성 :

def description 
    workout.description 
end 

그런 다음 할당의 특별 지시를 밖으로 관련 작업에 대한 설명을 가져와 측면을 따라 표시합니다 workout_assignments에 대한 설명을위한 사용자 정의 접근 물품.

+0

나는 당신의 대답을 100 번 투표 할 수 있었으면 좋겠다 ... 매우 도움이된다. 이것은 이제 완전히 이해가된다. 나는 이와 같은 것을 구현하려고 노력할 것이다. 다시 한번 감사드립니다. –

관련 문제