是否为不同的用户类型实现独立模型?

时间:2012-03-15 16:35:35

标签: ruby ruby-on-rails-3 devise

所以我正在使用rails构建一个Web应用程序并设计用于身份验证,我遇到了一个关于数据库设置的概念性问题。

该网站的想法是有两种不同类型的用户,每种用户都有自己的权限和视图。例如,当某人注册时,他们选择使用用户类型1或用户类型2.然后在注册后,根据他们的选择,他们会以不同的形式显示以填写他们的个人资料等。权限发挥作用因为类型1个用户可以看到第2类用户,但看不到其他第1类用户的个人资料,而第2类用户可以看到每个人的个人资料。

现在我的设置方式,我有两个独立的模型;每种类型的用户一个。然而,在网上浏览了一堆后,我读到很多人只使用一个模型,即User,用户类型列标识其类型以加载适当的资源。在我的方法走得太远之前,我只是想知道为用户类型设置多个模型的优缺点是什么?

1 个答案:

答案 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和公司也将是相应类别的实例。

相关: