2012-06-28 2 views
1

세 가지 모델을 설치하려고합니다 : 위치/장소, 범주 및 이웃.모델링하는 방법이 스키마에 대한 레일 연결

위치는 상위 카테고리와 하위 카테고리를 가져야하며 그 인접은 선택 사항입니다. 카테고리 모델에는 최상위 카테고리 또는 하위 카테고리가 있습니다.

위의 내용을 감안할 때 이것이 모델 연결을 정의하는 올바른 방법입니까?

class Location < ActiveRecord::Base 
    attr_accessible # location-specific columns 

    belongs_to :category 
    belongs_to :parent_category, :class_name => "Category" 
    belongs_to :neighborhood 
end 

class Category < ActiveRecord::Base 
    has_many :locations 
    has_many :subcategories, :class_name => "Category", :foreign_key => "parent_category_id" 
    belongs_to :parent_category, :class_name => "Category" 
end 

class Neighborhood < ActiveRecord::Base 
    has_many :locations 
end 

(사실, 적절한 Rails Guide의 자세한 내용을 읽은 후, 그것은 다형성 협회 대신에 더 적합 할 수 있습니다처럼 보이는?)

답변

0

그것은 다소 당신에게 위치 및 카테고리의 관계를 원하는 방법에 따라 달라집니다 작업; 하지만 위치가 하위 카테고리 카테고리에 속해야한다고 말하면 위치가 하위 카테고리 (카테고리가 있음)에 속해야한다는 것을 의미하는 것처럼 보입니다. 따라서 위치에있는 "parent_category"가 중복되는 것을 제외하고는 귀하의 연결이 정확하다고 생각합니다. 예를 들어

, 이제 나는 다음과 같은 한 가정 해 봅시다 : 이제

music = Category.create {title: 'Music'} 
    rock = Category.create {title: 'Rock', parent_category_id: music.id} 
    location = Location.create {title: 'The Fillmore', category_id: rock.id} 

나는 "락"의 범주와 위치를 가지고 있고, 나는 알아낼 수 있었다 그렇게 같은 상위 범주 ("음악")입니다 :

location.category.parent_category 

당신이 설명한대로 다형성 연관이 필요하지 않습니다.

+0

아직 코드에서이를 확인할 수 없지만 논리가 합리적입니다. 마침내 앉아서 내 환경을 실행할 수있게되면 몇 가지 질문이 생길 수 있습니다 ... – oohaba

관련 문제