1

J'ai une série de modèles tous qui héritent d'un modèle de base Propertiesmongo mapper avec STI avec plus d'un type?

Par exemple Bars, Restaurants, Cafes, etc.

class Property 
    include MongoMapper::Document 

    key :name, String 
    key :_type, String 
end 

class Bar < Property 

Ce que je me demande est ce qu'il faut faire avec le cas quand un enregistrement arrive à être à la fois Bar & un restaurant? Existe-t-il un moyen pour un seul objet d'hériter des attributs des deux modèles? Et comment cela fonctionnerait-il avec la clé: _type?

Répondre

2

Je pense que vous voulez un module ici. De cette façon, vous pouvez laisser de nombreux modèles avoir les propriétés d'un restaurant, sans dupliquer votre code.

Ce que vous pourriez aussi essayer, bien que je ne l'ai pas expérimenté moi-même, est plusieurs niveaux d'héritage. .: par exemple

class Property 
    include MongoMapper::Document 

    key :name, String 
    key :_type, String 
end 

class Restaurant < Property 
    key :food_menu, Hash 
end 

class Bar < Restaurant 
    key :drinks_menu, Hash 
end 

Je ne sais pas du haut de ma tête si MongoMapper soutient, mais je ne vois pas pourquoi il ne serait pas.

+0

Ce n'est pas que les modèles héritent d'autres modèles, je comprends comment faire cela, ce que je me demande sont des cas spéciaux où un enregistrement particulier se comporte comme un hybride entre deux modèles. – holden

+0

Ce serait le cas dans mon dernier exemple - un enregistrement de barre enregistré aurait à la fois un menu food_menu et un drinks_menu. Vouliez-vous dire quelque chose de différent? – PreciousBodilyFluids