2

一直在踢这个,现在想找一个了解 Rails 的人来测试我的理论(我是 Rails 的新手)。

在我的(简化)场景中,我想管理一个用户列表,其中一些是“付费”用户,一些是“免费”用户等,并且存在直接的“isa”关系。即付费用户是用户,免费用户是用户等

为了减少冗余并保持语义正确,我想在一个表中管理所有用户并使用外键返回正确的用户“类型”,这样我就可以创建正确类型的角色。例如,我将实例化一个用户,获取 id 并将其存储在正确类型的用户中,例如“user_id”外键中的“PaidUser”。这使我能够存储我想要针对它们存储的特定元数据,并且我不必为每种类型的用户拥有一个包含每个字段的表(“用户”)。

这种感觉就像是角色和用户类型的混淆。我的问题是,使用上述方法会让生活变得困难吗?我缺少的 Rails 中是否有一种可接受的方法?我正在使用 Devise 并删除了除 /users/ 之外的所有路由,我认为我会将“类型”作为参数传递,并使用该类型与用户同时创建相应的“真实”类型的记录。这也是不好的做法吗?

提前致谢

4

1 回答 1

1

你在做什么听起来不错,但老实说,除非你在用户类型之间有很多这些不同的属性,否则我会把它们都放在同一个表中。在这里和那里有几个空白列并不是什么大问题,尤其是当它使您不必做一大堆困难的事情时。如果这开始显得笨拙,那么您可以担心接下来要做什么——它仍然很容易改变。您甚至可以潜在地使用单表继承为所有不同的用户类型提供他们自己的类,该类继承自基User类,这是您处理所有身份验证等的地方。

如果你立即着手处理更复杂的事情,那么如果它被证明是错误的,那将比从简单的事情开始更难解决。如果您使用多表方法,请确保合理命名它们。我会和PaidUserProfile等一起去。

于 2013-05-13T10:21:20.727 回答