2012-10-29 4 views
7

Ruby on Rails를 처음 사용했습니다. 지금까지 스캐 폴딩을 사용하여 CRUD 작업 만 작성했습니다. 이제 두 개의 엔티티를 하드 코딩하지 않고 스 캐 폴딩을 사용하여 단일 형식으로 통합해야합니다.Ruby on Rails의 복합 엔티티 스캐 폴딩

우리는 어떻게 스크립트를 사용하여 두 개체를 함께 비계 할 수 있습니까?

두 개의 엔티티 Student_address와 Student_phnumber가 있습니다. 이 두 엔티티를 CRUD 작업을 수행 할 수있는 단일 양식으로 비계하고 싶습니다. 스캐 폴딩을 통해이 작업을 수행하고자합니다.

Student_address 등 Hse_name, STREET_NAME, 구성된 엔티티입니다 Student_phnumber ph_number, 유형으로 구성된 다른 기업 등

나는이 두 가지 요소를 스캐 폴딩하고 싶다.

+0

2 개의 엔티티를 추가하면 어떻게됩니까? 좀 더 명확하게 표시 할 수 있습니까? – AnkitG

+0

왜이 사람들은 투표를하지 않습니까. 네가 투표를 못하면 이유를 설명해 줘. – Okky

+1

나는 아무 방법도 없다고 생각한다. 어쩌면 당신은 그것을 하드 코딩해야합니다! – cortex

답변

6

Scaffolding 완전한 기본 자원을 모델링하기 위해 설정된 generator에 불과하다. 스캐 폴딩을 제외한 다른 많은 생성기가 레일스와 함께 기본적으로 제공됩니다. 어떤 모델도 관련 모델 집합에 대한 리소스를 생성하도록 설정되지 않았습니다. 나는이 같은 관계의 표현 방법의 폭이 넓어서 일반적인 UI를 만드는 것이 사실상 불가능하다고 생각합니다. 또한 스캐 폴딩은 사용자의 필요에 맞게 수정 될 수 있도록 사용자를 신속하게 기동시키고 실행할 수 있도록 설정되어 있습니다. 이러한 수정은 일반적으로 중요하지 않은 응용 프로그램에 상당히 관련되어 있습니다. 인기있는 nifty generators을 포함하여 많은 제 3 자 생성기가 있지만 생성하려는 코드를 생성하는 생성자는 없습니다. 이것이 자주 설정해야하는 관계라면 작업을 처리 할 수있는 자체 생성기를 만드는 것이 좋습니다. 실제로는 꽤 쉽습니다. 좋은 방법은 이상적인 케이스를 구현 한 다음, 생성기를 생성하는 것입니다.

편집 : 또한

, 당신은 당신의 변수/속성 이름을 조정 할 수 있습니다. 소문자 및 밑줄로 표시되어야하므로 Street_namestreet_name이됩니다. 임의의 약어를 사용하면 코드/유지 관리가 매우 어려워 지므로 Student_phnumberstudent_phone_number으로 표시하는 것이 좋습니다. 일관성 (예 : ph_numberStudent_phnumber)을 제외하고이 작업을 수행하는 이유는 레일스가 실제로 케이스와 간격을 internal methods like these에서 사용한다는 것입니다.

0

이게 당신이 찾고 있는게 있니?

rails generate scaffold Student student_address:string student_phnumber:string

+0

아니요 Student_address는 Hse_name, Street_name 등으로 구성된 엔티티입니다. Student_phnumber ph_number, type 등으로 구성된 다른 엔티티 이 두 엔티티를 함께 비계하고 싶습니다. – Okky

2

내가 당신을 이해하는지 보겠습니다.

당신이 묘사하는 모델/엔티티 관계는 다음과 같습니다 자동으로 양식 컨트롤러/뷰를 생성

가) 자동으로 모델을

B를 생성) :

student 
    address 
    - house_name 
    - street_name 
    - etc 
    phone_number 
    - number 
    - area_code 
    - etc 

당신은 할 주소 및 전화 번호를 설정하는 필드를 포함하여 학생을 만들려면

좋습니다. b) Rails 비계를 통해 수행 할 수는 없습니다. 그러나이를 달성하려면 ActiveSupport gem (docs here)을 사용할 수 있습니다.관계

gem install active_scaffold 
rails g active_scaffold Student name:string 
rails g active_scaffold PhoneNumber area_code:integer number:integer student_id:integer 
rails g active_scaffold Address first_line:string second_line:string student_id:integer 

당신이해야 할 것이다 유일한 수동 작업을 모델로 대중과 추가 : 무엇 ActiveScaffold 할 것 것은 자동에 대한을 생산

Address 
belongs_to :student 
PhoneNumber 
belongs_to :student 
Student 
has_one :address 
has_one :phone_number 

입니다

을 여기에 당신이 무엇을 이 같은 전망 :

enter image description here

그 양식을 작성하여 모델은 모든 SAV 될 것입니다 에드 앤드 링크!