Rails为社交网络设计用户架构

时间:2016-02-02 22:01:33

标签: ruby-on-rails ruby devise social-networking

我正在使用rails创建一个社交网络应用程序并设计为用户身份验证gem。我有多种类型的用户,不知道如何继续。

我的userType1和userType2几乎没有什么共同之处,所以我不知道STI是否可行。

我是否应该从Devise User继承这两种用户类型,还是应该使用devise创建每种用户类型。

最后,我应该在用户类型中创建所有社交字段,还是为此类信息创建个人资料模型

非常感谢任何帮助

第一类用户是具有名字,姓氏,个人资料照片和家庭住址等基本字段的客户。

第二类用户是具有许多其他字段的代理,例如名字,姓氏,个人资料照片,商业信息(地址,电话等),专业,类别,职位,网站,社交活动,以及其他领域。

两者之间的功能差异很大,代理用户将充当朋友,标记,创建事件,列表等......并且客户将仅创建lsitings,联系代理和搜索列表。

2 个答案:

答案 0 :(得分:0)

我会认真重新考虑为您的用户类型设置两个模型。相反,请考虑使用纤薄的用户模型并使用关联(如User.profile,User.details)来保存额外的属性。通过阻止您在设计代码中处理不同的“用户”模型,这将为您省去很多麻烦。

答案 1 :(得分:0)

遗憾的是,如果没有关于用户模型之间差异的详细信息,很难提供具体答案,但这里有一些需要考虑的事项:

Devise用于处理用户注册,登录和内容管理。

如果您的两种用户类型将以相同的方式创建帐户,以相同的方式签名或查看大部分相同的内容,则可能不值得拥有两个模型,因为可以在模型本身中存储细微的差异。

如果您的两个用户在功能上有很大差异,那么将它们分开可能会使您的代码更具可读性。如果它们在概念上有很大不同,为了使您的代码与您的域模型匹配,也可能需要单独付费。

请务必考虑两种不同类型的用户将如何注册/登录。如果他们打算使用相同的页面/表单,那么处理两种不同的类型将立即变得非常复杂,可能过于令人望而却步。