2012-11-18 4 views
24

안녕하세요 저는 Ruby on Rails를 처음 사용합니다. 나는 작은 블로그 사이트를 만들려고 노력하고있다. 나는 두 개의 테이블에 게시물과 코멘트가 있습니다. 각 게시물에는 많은 의견이 있습니다. 이러한 명령을 사용하여 테이블을 생성합니다.스카 폴딩시 관계 생성

rails g scaffold Post title:string body:text author:string 
rails g scaffold Comment body:string author:string 

는 지금은 모델 클래스에 관계를 추가 할. 게시물 클래스에 has_many :comments을 추가하고 설명 클래스에 belongs_to :title을 추가합니다. 그러나 post.comments을 호출하려고 시도하면 SQLException: no such column: comments.post_id이라는 런타임 오류가 발생합니다. 내가 마이그레이션을 생성하고 코멘트 아래에 post_id를 추가해야합니까, 아니면 스캐 폴딩 할 때 이것을 달성 할 수있는 방법이 있습니까?

+1

https://coderwall.com/p/f5mdoq에서 도움을 받으십시오. –

+1

현재 수락 된 답변이 오래되어서이 질문에 대한 대답을 변경할 수 있습니까? Thx – JamieD

답변

9

당신은 확실히 올바른 길을 가고 있습니다.

rails g scaffold Comment body:string author:string post_id:integer 
+13

** 아래에서 더 나은 대답을 참조하십시오! ** – mb21

118

비계 다음 Comment 비계를 생성 할 때 post_id 열을 추가하는 경우의 관계는

(여전히 has_many :commentsbelongs_to :post를 추가 할 필요가 있지만) 그래서 업데이트 된 발전기 호출은 다음과 같을 것입니다 작동합니다 실제로 이것은 마이그레이션을 생성합니다 :references 데이터 형식

rails g scaffold Comment body:string author:string post:references 

를 사용해야 관계를 생성하는 방법을 제공합니다 post_id 필드와 색인이있는 주석 테이블의 경우. 생성기는 또한 belongs_to :post을 Comment 모델에 추가합니다. 당신이 포스트 모델 자신에게

has_many :comments 

를 추가해야합니다 있도록

그것은 그러나 관계의 뒷면을 생성하지 않습니다. 생성자가이를 처리 할 수 ​​없기 때문에 필요한 경우 중첩 된 리소스 라우팅을 추가해야합니다.

+16

이 대답을 받아 들여야합니다 –

+1

2 년 후))) – user2950593

+1

수동으로 has_many 필드를 추가하면 어떻게 마이그레이션을 생성합니까? – lapinkoira