我有这些表:如何建模多博客网站?
**Sites**
:has_many :blogs
:has_many :pages
**Blogs**
:belongs_to :site
**Pages**
:belongs_to :site
:belongs_to :blog
基本上,我希望能够创建要么相关的网站或相关的博客与路线像这样的网页:
/blogs/1/pages/1
/sites/1/pages/2
随着我的当前设置,我的页面表中有blog_id和SITE_ID一个foreign_key - 我只是想这样做的:如果正在FO创建页面
ra网站(意思是它不属于博客),然后将blog_id =设置为NULL,但是相应地设置site_id
但是,如果正在为博客创建页面(已经属于某个站点)相关SITE_ID和blog_id
然后,如果我想网站页面的列表:我可以只查询页面表的所有NULL blog_ids,如果我想博客网页,我会通过与关系让他们博客已经。
更新:我接受了下面的建议使用“多态关联”的答案,但这也可以使用单表继承?如果是这样,哪种方法更好?
谢谢。