2010-04-04 3 views
12

저는 Ruby on Rails에 익숙하지 않아 RoR (베이스 기타)을 가르치기 위해베이스 기타 튜터를 만들려고합니다. 이 연습에서는 Scaffold를 사용하여 ActiveRecord 클래스를 만들었지 만 독립 실행 형 테이블에 해당하는 것처럼 보입니다. belongs_to 또는 has_many은 사용하지 않습니다.Scaffold를 사용하여 many-one 관계를 만드는 방법은 무엇입니까?

스케일, GuitarString 및 Fret의 세 클래스를 만들고 싶습니다. 각 스케일에는 많은 프리 토 (Frets)가있는 기타 기타 스트링 (GuitarString)이 많이 있습니다.

Scaffold를 사용하여이 관계로 클래스를 만드는 방법은 무엇입니까? 한번에 그것을 할 수있는 방법이 있습니까? 아니면 Scaffold를 사용하여 관련이없는 상태에서 만들 필요가 있습니까? 그런 다음 손으로 관계를 추가 할 수 있습니까? 또는 Scaffold를 완전히 흘려야합니까?

+0

가능한 복제본 http://stackoverflow.com/questions/502119/rails-scaffold-to-automatically-do-one-to-many-relationship – hobodave

+0

@hobodave : silimar, 예. 그는 "할 수 있을까?"라고 묻습니다. 그리고 나는 "이걸 어떻게 할 것인가?"라고 묻습니다. – Simon

+0

내 대답에서 편집을 확인하고 싶을 수 있습니다. –

답변

16

몇 주 전에 Ruby on Rails를 배우기 시작했고, 스캐 폴딩을 사용하지 않고 명령 행에서 다양한 부분을 생성함으로써 많은 일들을 처리하고 길을 배우는 것이 훨씬 쉬워졌습니다. 또는 IDE의 매크로).

그러나 내가 말할 수있는 것에서는 스 캐 폴딩을 사용하여 물건을 생성 할 때 "자원"을 생성한다고 생각하기 때문에 한 번에 하나의 자원 만 생성 한 다음 관계를 추가합니다 나중에 손으로.

그러나 모델 생성 명령은 이러한 관계를 생성 할 수 있습니다. 스캐 폴딩을 사용하여 Scale 리소스를 생성했다고 가정 해 보겠습니다. 참조가 GuitarString 모델에 belongs_to :scale을 만들 것입니다,하지만 당신은 has_many 추가해야합니다 :

그런 다음

ruby script/generate model GuitarString name:string scale:references 

규모를 할 수있는 저울 모델에 guitarstrings을.

generate model 명령은 스캐 폴딩과 유사하게 필요한 기타 파일 (Fixtures)을 생성하지만보기 나 컨트롤러 또는 기타 항목을 자동 작성하지 않습니다.

편집 :

이것은 당신이 일을 할 것 방법을 일반적으로합니다 - 생성/모델/또는보기를 생성하거나/컨트롤러를 생성하거나/마이그레이션을 생성 사용합니다. 대부분의 Rails 개발자는 스캐 폴딩을 사용하지 않습니다. 왜냐하면 "하나의 크기가 모두 적합합니다"는 거의 완벽하게 맞지 않기 때문입니다. 그러나 대부분의 레일 개발자는 앞서 언급 한 생성 명령을 사용합니다. 손으로 도우미 및 조명기를 만드는 데 시간을 절약 할 수 있으며 생성하는 각 파일에 추가 할 수있는 기본 템플릿을 제공합니다.

JetBrain의 RubyMine과 같은 Ruby IDE에는 기본적으로 이러한 명령을 수행하는 매크로가 있습니다. RubyMine에서 ctrl + alt + g을 수행 한 다음 생성하려는 항목에 해당하는 다른 키를 입력 할 수 있습니다.

앞서 언급했듯이 belongs_to 관계는 "references"단어를 사용하여 생성 할 수 있습니다. 기타 당신은 손으로 추가 할 것입니다.