【发布时间】:2021-03-18 21:51:16
【问题描述】:
我正在使用 Rails 开发一个项目。在这个应用程序中,我们使用 OAuth 来启用 Facebook 和 Google 注册/登录。我想将各种提供者(FB 或 Google)以及与这些提供者关联的用户 ID 存储在与用户相关的单独表/模型中。
我的问题是下一个问题,FB 和 Google 提供的用户 ID 是很长的数字(Google 是 21 位数字)。将其存储为整数或更好地将其存储为字符串是否有意义?这两个选项的优缺点是什么?
我使用的是 Postgres 10.14。
【问题讨论】:
-
这将在很大程度上结束一个意见,我将它们存储为一个字符串。你的价值观来自你无法控制的外部来源,我建议你不要用它们计算任何东西。你能确保你永远不会允许使用字母数字方案的其他来源吗?
-
@Belayer:虽然假设数字都是数字(并且可能基于该假设进行编码),但我不希望其他字符偷偷溜进来,所以没有字符串类型。如果发生这种情况,我希望立即收到错误消息。第一个问题:假设所有数字是否合理?
-
@ErwinBrandstetter:这就是为什么我说它最终将主要是意见。同意,我不希望角色值潜入,但如果没有控制,我无法阻止故意将角色放在那里。至于你的第一个问题 - 不,但是从 2 的宇宙来看,假设它必须是全数字也是不合理的。所以我的第一个问题略有不同:假设它们必须全是数字是否合理。如果我想验证来自多个外部实体的数据,而我无法指定数据格式,那么我需要为每个实体使用不同的验证例程。
标签: ruby-on-rails postgresql types numeric