【发布时间】:2012-12-19 22:31:43
【问题描述】:
我需要一些建议。我正在制作一个学习起来有点复杂的应用程序。它有一个用户模型。用户注册后,我希望在他/她第一次(也是第一次)访问某些页面时出现一个模式对话框。例如,有“投票”页面和“创建投票”页面等。
实施此类帮助系统的最佳方式是什么?我想在我的用户模型中添加一个列,该列可以包含一个默认值列表,例如“投票、创建、共享”。当用户访问与这些操作之一对应的页面时,如果该操作的名称仍在列表中,则会出现模式并且该操作的名称将从列表中删除。
这听起来合理吗?我知道在规范化数据库中,您不应该在单个字段中存储多个值。但是创建一个名为“actions”的表和另一个连接表来将用户与操作相关联似乎很疯狂。用户在网站上只能做 4 或 5 件事。
或者还有其他我想念的方法吗?提前感谢您的建议。
【问题讨论】:
-
如果用户可能做的这组事情完全是静态的并且永远不会改变,那么以类似于您的建议的方式进行非规范化应该不会有太多问题。但是,我建议该列是 MySQL 的
SET类型,或者您有多个 MySQL 的BOOLEAN类型的列(每个操作一个)。 -
请不要在 Rails 应用程序中使用
SET。它非常脆弱,在列表中引入新值需要更改架构。重建大表可能需要大量停机时间才能完成。
标签: mysql ruby-on-rails database web-applications