2010-04-13 2 views
6

Ruby와 Rails를 처음 접했습니다. 게시물과 댓글을 모두 포함하는 매우 간단한 블로그 응용 프로그램을 만들었습니다. 모든 것이 훌륭하게 작동합니다. 카테고리 추가에 관한 다음 질문. 나는이 일을하는 가장 좋은 방법이 궁금합니다. 내가 너무 멀리 볼 수 없기 때문에 레일즈에 관해서라면 나는 물을 것이라고 생각했다.게시물에 범주를 추가하는 가장 좋은 방법은 무엇입니까? - Ruby on Rails 블로그

분명히 말하면 단일 게시물에는 여러 개의 카테고리가 있고 카테고리에는 여러 개의 게시물이있을 수 있습니다.

'categories'테이블을 만든 다음 게시물 및 카테고리 모델을 사용하여 has_many :posts, has_many :categories을 수행하는 가장 좋은 방법은 무엇입니까? 게시물이 카테고리에 포함되도록 routes.rb을 설정하겠습니까?

또는 단순히 기존 게시물 테이블에 카테고리 열을 추가하면 더 쉬운 방법이 있습니까? (이 경우 여러 범주를 갖는 것이 어려울 것이라고 생각합니다).

답변

8

카테고리와 게시물 사이에 다 대다 관계가 필요하므로 ActsAsTaggableOn과 같은 태그 플러그인을 사용하고 싶습니다. 여기에서 "태그"가 무엇인지를 정의하고 " 범주." 간단하고 효과적입니다. 양식에서 다른 카테고리에 대한 허용 목록 (예 : '코딩', '조리법', '휴가')을 사용하여 '태그'의 가능한 값을 제한 할 수 있습니다.

19

그것은 당신이 넣어하고자하는 금액 노력에 달려있다 - 당신이 하는 태그 플러그인을 사용할 수 있습니다, 또는 게시물 및 카테고리 모델 모두에서 has_and_belongs_to_many 관계를 설정,하지만 난 조금 다른 것을 권 해드립니다.

세 번째 모델 인 "분류"를 게시물과 범주 사이에 일종의 "접착제"로 만들면 더 많은 제어가 가능합니다. Post has_many :categories :through => categorizations 및 범주 has_many :posts :through => :categorizations

이 이점은 범주가 코드에 저장되는 것이 아니라 데이터베이스에 저장되므로 추가/제거/편집 할 때 소스 코드를 수정할 필요가 없다는 것입니다. 경로를 설정하는 방법은 전적으로 귀하에게 달려 있습니다. /categories/:id은 해당 카테고리에 속한 모든 게시물의 목록을 반환하거나 하나 이상의 범주를 매개 변수로 사용하여 일종의 검색 양식을 구현할 수 있습니다.

Ryan Bates는 문제를 해결하는 여러 가지 방법으로이 모든 것을 설명하는 excellent screencast을 가지고 있습니다.

당신이 RoR에 익숙하지 않다고 언급 한 사실을 알고 있습니다. 그렇다면이 내용이 조금 복잡하면 사과드립니다. 앞서 말했듯이, 플러그인이 사용자의 요구에 가장 적합 할 수도 있지만 더 유연하고 제어 할 수있는 이점이 있으면 가능한 한 직접 코드화 한 것이 좋습니다.

관련 문제