将角色建模为用户表上的布尔列的缺点

发布于 2024-09-29 15:34:42 字数 282 浏览 1 评论 0原文

我正在开发一个使用 CanCan 进行 RBAC 的 Rails 应用程序,我只有 3 个角色,也许我会在后续的某个地方添加 1 或 2 个角色。

过去,我一直将角色作为自己的实体,通过 m2m 链接表加入用户。由于角色如此之少且静态,这似乎有点矫枉过正。因此,我正在考虑简单地将布尔列添加到每个角色的用户表中。我还可以使用位掩码(就像 CanCan 示例那样),但我不太热衷于在单个列中存储多个值。

所以我的问题是,在这种情况下最好的做法是什么:位掩码、多个布尔列,还是正确规范化的 m2m 关系?

I'm working on a Rails app using CanCan for RBAC and I only have 3 roles and maybe I'll add 1 or 2 more somewhere down the track.

In the past I've always had roles as their own entity, joined to users via a m2m link-table. With so few, and static, roles, that seems like overkill. So I'm thinking of simply adding boolean columns to my Users table for each role. I could also use a bitmask (like the CanCan example does) but I'm not too keen on storing multiple values in a single column.

So my question is, what's the best thing to do in this situation: bitmasks, multiple boolean columns, or a properly normalized m2m relationship?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

煞人兵器 2024-10-06 15:34:42

根据 YAGNI 原则进行操作将促使我决定为每个角色使用单独的位列。即使随着时间的推移添加更多列,它仍然比 M2M 链接表更容易管理。我完全同意不使用位掩码,因为它们掩盖了数据的含义。

我只是从 SQL 方面解决这个问题,因为我没有使用 Rails、CanCan 或 RBAC 的经验。

Operating on the principle of YAGNI would drive my decision to use the separate bit columns for each role. Even if you add a couple more columns over time it's still easier to manage than a m2m link-table. I completely agree with not using bitmasks as they obscure the meaning of the data.

I'm only addressing this from the SQL side as I have no experience with Rails, CanCan or RBAC.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文