所以我正在使用rails构建一个Web应用程序并设计用于身份验证,我遇到了一个关于数据库设置的概念性问题。
该网站的想法是有两种不同类型的用户,每种用户都有自己的权限和视图。例如,当某人注册时,他们选择使用用户类型1或用户类型2.然后在注册后,根据他们的选择,他们会以不同的形式显示以填写他们的个人资料等。权限发挥作用因为类型1个用户可以看到第2类用户,但看不到其他第1类用户的个人资料,而第2类用户可以看到每个人的个人资料。
现在我的设置方式,我有两个独立的模型;每种类型的用户一个。然而,在网上浏览了一堆后,我读到很多人只使用一个模型,即User,用户类型列标识其类型以加载适当的资源。在我的方法走得太远之前,我只是想知道为用户类型设置多个模型的优缺点是什么?
答案 0 :(得分:1)
我建议您使用Single Table Inheritance:
class User < ActiveRecord::Base
# Data shared by all kinds of users
end
class Type1User < User
# Data specific to type 1 user
end
class Type2User < User
# Data specific to type 2 user
end
所有这些模型都会保存在users
表格中,但会有一个type
列,可让您区分它们。 User
返回的find
和公司也将是相应类别的实例。
相关: