【问题标题】:Rails devise user architecture for social networkRails 为社交网络设计用户架构
【发布时间】:2016-05-11 22:00:06
【问题描述】:

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

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

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

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

非常感谢任何帮助

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

第二类用户是具有许多其他字段的代理,例如名字、姓氏、头像、业务信息(地址、电话等)、专业、类别、职位、网站、社交帐户和其他字段。

两者在功能上的区别很大,代理用户将充当朋友、标记、创建事件、列表等……而客户只会创建 lsitings、联系代理和搜索列表。

【问题讨论】:

  • 你的问题太宽泛了。我们不知道你的经验水平,所以我们给出的任何答案都是在黑暗中拍摄的,希望它对你有意义。为了正确解释,我们必须从头开始编写教程。请提供更多信息,这样我们就不必只根据猜测给出意见。
  • @theTinMan 我已经编辑了我的问题以获得有关用户模型的更多信息

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


【解决方案1】:

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

【讨论】:

  • 但是我需要创建两种类型的配置文件来为每个用户保存不同类型的属性@errata
  • 这比创建两个都继承自 Devise IMO 的不同“用户”类要好。
  • 我喜欢这个替代方案,但是我将如何进行用户和配置文件之间的关联。我会让用户模型拥有每个配置文件之一吗? @勘误
  • 你可以有一个相关的模型,可以同时容纳两者,并且可能有一个类型字段..这看起来很笨拙。我发现 NOSQL 或 postgres 数组类型更适合动态或变化的数据结构。
  • 您还可以将配置文件定义为多态关联以使用与用户关联的各种配置文件类
【解决方案2】:

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

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

如果您的两种用户类型将以相同的方式创建帐户、以相同的方式登录或查看几乎相同的内容,则可能不值得拥有两个模型,因为模型本身可能会存储细微的差异。

如果您的两个用户在功能上有很大差异,那么将他们分开可能会使您的代码更具可读性。如果它们在概念上存在很大差异,那么为了使您的代码与您的域模型匹配,将它们分开可能也是值得的。

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

【讨论】:

  • 我添加了有关模型的更多信息。我的目标是让他们使用相同的表格进行注册、登录和其他表格
猜你喜欢
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多