1

나는 기본 모델 예를 들어 Properties하나 이상의 유형이있는 STI가있는 몽고 매퍼 (mongo mapper)?

에서 상속 모델의 모든 시리즈를 Bars, Restaurants, Cafes, etc.

class Property 
    include MongoMapper::Document 

    key :name, String 
    key :_type, String 
end 

class Bar < Property 

내가 궁금하면 기록이 모두 될 일 때 경우에 무엇을해야하는 것입니다 레스토랑 & 바? 단일 개체가 두 모델의 특성을 상속하는 방법이 있습니까? 그리고 키와 함께 작동하는 방법 : _ 유형?

답변

2

여기 모듈을 원한다고 생각합니다.

class Property 
    include MongoMapper::Document 

    key :name, String 
    key :_type, String 
end 

module Restaurant 
    def serve_food 
    puts 'Yum!' 
    end 
end 

class Bar < Property 
    include Restaurant 
end 

Bar.new.serve_food # => Yum! 

이렇게하면 코드를 복제하지 않고도 많은 모델에 레스토랑의 속성을 부여 할 수 있습니다.

시도해 볼 수있는 것은 내가 직접 실험하지는 않았지만 여러 수준의 상속입니다. 예 :

MongoMapper가 지원하는지 여부는 내 머리 꼭대기에서 잘 모르지만 그 이유는 알 수 없습니다.

+0

모델이 다른 모델을 상속 받았다는 것이 아니라 내가 어떻게하는지 이해합니다. 특정 레코드가 두 모델 간의 하이브리드처럼 작동하는 특별한 경우에 대해 궁금합니다. – holden

+0

마지막 예제에서 보듯이, 저장된 바 레코드에는 food_menu와 drinks_menu가 둘 다 있습니다. 뭔가 다른 의미가 있니? – PreciousBodilyFluids