考虑一个典型的社交网站,它或多或少有以下模型:
User
Blog, Posts
Forums, Topics, Responses
Wiki, Pages
....
....
我想介绍一个名为网站/空间的模型,其中每个用户可以拥有一个或多个网站/空间。我想为网站所有者提供一种选择许多功能的方法(或称之为应用/工具)。
设计此模型的最佳方式是什么 - 所谓的功能/应用/工具?
注意:在许多情况下,每个功能可能与相应型号不同。让我们考虑博客功能,通过启用博客功能,我应该能够关联(某些方式)相应的网站可以访问博客&发布,(另一个例子)通过启用论坛功能,我应该能够关联该网站不仅可以访问论坛,还可以访问主题&响应模型。我需要这些检查,以便我可以定义一个before_filter来检查特定站点是否有权访问该内容。
我查看了一些具有此类随需应变功能的开源rails应用程序,但是通过查看表单属性,看起来他们将has_blog,has_post,...字段隐藏在Sites表中,在我的情况下它可能不起作用,因为这些模型的数量可能会增长。 您是否仍然认为在“网站”表格中添加这些布尔字段是最佳方法?
答案 0 :(得分:0)
在数据库中定义Apps和Sites表之间的多对多关系。
应用
网站
SiteApps
的AppID
从SiteApps中选择AppID WHERE SiteID = ...
答案 1 :(得分:0)
多态关联,has_many:through和/或has_and_belongs_to_many听起来像是解决方案的构建块。我会调查他们。