J'ai ces tables:Comment modéliser un site multi-blog?
**Sites**
:has_many :blogs
:has_many :pages
**Blogs**
:belongs_to :site
**Pages**
:belongs_to :site
:belongs_to :blog
Fondamentalement, je veux être en mesure de créer des pages qui sont soit liés à un site ou lié à un blog avec des itinéraires comme ceci:
/blogs/1/pages/1
/sites/1/pages/2
avec ma configuration actuelle, ma table Pages a une foreign_key pour blog_id eT site_id - et je pensais juste de le faire:
si une page est créée fo ra site (ce qui signifie qu'il n'appartient pas à un blog) puis définissez blog_id = à NULL, mais définissez site_id en conséquence
mais, si une page est créée pour un blog (qui appartient déjà à un site), définissez la site_id connexe eT blog_id
Alors si je veux une liste des pages du site: je peux interroger la table Pages pour tous blog_ids NULL, et si je veux blog pages, je vais les passer à travers la relation avec Blog déjà. MISE À JOUR: J'ai accepté la réponse ci-dessous qui suggérait d'utiliser des «associations polymorphes», mais cela pourrait-il être fait aussi en utilisant Single Table Inheritance? Si oui, quelle est la meilleure méthode?
Merci.