지난 포스트에서 BigCategory를 만들었습니다. 이번에는 SmallCategory를 만들 예정입니다.
이 두녀석은 서로 관계가 있습니다.
BigCategory와 SmallCategory는 1:N 관계입니다.

눈여겨 보실 부분은 small_categories 테이블에 있는 필드이름 중에서 big_categories테이블과 관계를 맺는 필드의 이름입니다. 이녀석이죠 "big_category_id" 이전에 말씀드렸지만.. 이건 rails의 규칙입니다. 반항하지 마세요 ^^

그럼 이제 model를 만들고 scaffold기능을 이용해서 관련된 파일을 생성하시면 됩니다.
그리고 만들어진 model에 서로의 관계를 만들어 주는 작업을 합니다.
/app/model/big_category.rb

/app/model/small_category.rb

( 1:1, M;N의 관계를 표현하는 방법은 우선 패스 하겠습니다.^^)

scaffold를 이용해서 만들어진 list.hrml파일을 조금 수정하시면 다음과 같은 화면을 보실 수가 있습니다.
(리스트의 페이지 번호를 넣는 방법과 검색폼을 넣은 것과 관련하여서는 다음 포스팅을 참고해 주세요)

 

Posted by 달빛변신

댓글을 달아 주세요

  1. 무한 2009.03.13 03:25  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, Rails 공부하다가 블로그를 찾게 되었습니다.

    궁금한게 있어서 댓글 답니다.

    위에 small_category 테이블을 보면, big_category_id가 (아마도) foreign_key로 설정되어 있는 것 같은데, belongs_to와 has_many를 설정하는 것만으로 foreign key로 자동적으로 설정 되나요?
    아니면 small_category를 scaffold로 생성할 때 저 부분을 만들어 줘야 되나요?

    제가 시도한 건, scaffold로 big_category 생성, script/generate scaffold small_category name:string order:integer 이렇게 만들고, model에서 위에 쓰신 것 처럼 belongs_to, has_many를 설정해 줬거든요.

    그런데 foreign_key가 생성된건지, 뭔가 잘못해서 안 된건지 잘 모르겠습니다. ㅡ.ㅜ

    • 달빛변신 2009.03.13 16:15 신고  댓글주소  수정/삭제

      만들어 주실때 big_category_id:integer를 포함해 주셔야 합니다. 이렇게 해주시고 model에서 상관 관계를 각각 수정해 주시면 big_cateogry의 id 값과 small_category의 big_category_id값이 서로 관계를 가지게 됩니다.
      이 부분을 포함해서 포스팅 했어야 했는데, 저의 부족함이 드러나는 부분입니다. 질문해 주셔서 감사합니다. ^^