【发布时间】:2010-11-07 23:02:14
【问题描述】:
我见过两种不同的保存用户偏好的方法。
方法 1: 将它们序列化并保存在 USERS 表的一列中
方法 2: 创建一个单独的表 PREFERENCES 并建立从 USERS 到 PREFERENCES 的 has_many 关联。
您更喜欢上述两种方法中的哪一种,它们各自的优缺点是什么?
【问题讨论】:
-
您存储的是什么类型的首选项?布尔值?多个项目?
-
@hopeless - 那将是多个项目。我倾向于选项 2,但是通过查看 rails serialize 选项,我觉得使用 Hash 作为选项,选项 1 可以或多或少类似于选项 1 来完成,因为没有另一个表和更多的 SQL 连接。任何反馈表示赞赏。另外,你们把 USERS 表弄得乱七八糟是什么意思,所有的偏好都将只存储在偏好列中。
-
@satynos - 混乱意味着用户表现在更加混乱,因为它不仅仅是(我假设)保存登录/名称信息。如果您正在序列化,那么当您需要查找内容时,这意味着更多的工作。基本上,每次你需要知道一个时,你都必须解析所有的偏好。将首选项(如果只有几个)作为字段放在用户表上比 blob o' 首选项更好,因为您不必查看所有首选项即可找到一个。
-
感谢您的反馈,所以选择 2。
-
“基本上,每次你需要知道一个偏好时,你都必须解析所有的偏好”——是的,解析 YAML 的速度非常快。 FWIW,这里没有人给出任何真正的理由,这是纯粹的宗教。