2012-03-15 70 views
0

因此,我正在构建一个使用rails和设计进行身份验证的Web应用程序,并且遇到了有关设置我的数据库的概念性问题。要为不同的用户类型实现独立模型吗?

该网站的想法是,有两种不同类型的用户,每个都有自己的权限和意见。例如,当某人注册时,他们选择了用户类型1或用户类型2.然后,在注册后,根据他们的选择,他们会以不同的形式呈现以填写他们的个人资料等等。权限开始起作用,因为类型1个用户可以看到类型2的用户,但看不到其他类型1用户的配置文件,而类型2的用户可以看到每个人的配置文件。

现在我设置它的方式,我有两个单独的模型;一种用于每种类型的用户。然而,在网上浏览了大量文章之后,我读到很多人只使用一个模型,即User,并使用一个用户类型的列来标识它们的类型以加载适当的资源。在我的方法变得太过分之前,我只是想知道有多种用户类型的优点和缺点?

回答

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列,它允许你告诉他们分开。 Userfind返回并且公司也将是适当类别的实例。

相关: