如何建模用户自定义表模型与Field模型的关系

时间:2012-08-04 20:04:52

标签: ruby-on-rails postgresql

我正在构建CMS,我想要添加的功能之一是用户指定的伪表,以便让具有足够权限的用户创建表,列,行和字段。显然,出于安全原因,让他们实际访问数据库是不明智的,所以我正在寻找创建一个Tables模型和相关的子模型(Column,Row,Field)。这是我目前正在查看的架构:

UserTable:
- id:int
- title:string
- :has_many UserColumns
- :has_many UserRows
- :has_many UserFields :through => rows

UserColumn:
- id:int
- table_id:int (foreign key)
- title:string
- type:enum
- :belongs_to UserTable
- :has_many UserFields

UserRow:
- id:int
- table_id:int (foreign key)
- :belongs_to UserTable
- :has_many UserFields

UserField:
- id:int
- row_id:int (foreign key)
- column_id:int (foreign key)
- data:string

我仍然面临的一个重要问题是UserTable - > UserField关系。看起来可以通过UserColumnUserRow运行。后者对我来说更直观,所以这就是我目前正在使用的东西,但如果有充分的理由去任何一种方式,我想听听它。同样,如果有任何我没有看到的关键问题,或者只是更简单的方法来处理整个混乱(虽然这似乎相当简单)。

1 个答案:

答案 0 :(得分:1)

我会使用方案,具体取决于涉及的用户数量。使用新用户创建新方案相当容易,然后创建所需的表。

使用完整方案,您可以非常精细地控制访问,提供简单安全的备份和数据迁移等。

为什么你不考虑首先使用方案?