Rails App:为两个用户模型(如Uber)建模的最佳方法。设计? 1个人资料模型?

时间:2018-09-24 01:56:14

标签: ruby-on-rails devise

我有以下模型(模型不重叠,会计不能成为客户):

  • 公司有很多会计师
  • 会计有很多客户

会计师和客户可以登录/注册。

进行身份验证的最佳方法是什么?

选项A:

将Devise与两个单独的模型(会计和客户: https://github.com/plataformatec/devise/wiki/How-to-Setup-Multiple-Devise-User-Models

选项B: 将Devise与一个模型用户一起使用,然后与另一个模型概要文件一起使用,该模型概要文件具有一些信息,例如列角色。

优点和缺点将非常有用,因为每次我构建这样的Rails应用程序时我都会问自己一个问题。我习惯于使用选项B

谢谢。

1 个答案:

答案 0 :(得分:2)

那么,正确的解决方案取决于您如何处理这两种类型的用户(会计师和客户)。这两个选项都是合理的,但是,我会选择选项B。

优点是:

  • 您不必担心会计师和客户模型的登录相同。当使用相同的登录表单登录客户和会计师时(我怀疑他们会有2种不同的登录表单),控制者将不得不确定它是客户还是会计师。如果给定的登录名将在customersaccountants表中,则可能会有歧义。当您仅使用一个表users时,就没有这种问题。
  • 您不必复制与授权相关的代码。迟早会有两种不同的型号,这是不可避免的。不同的视图,不同的邮件模板,有时还有不同的控制器。
  • 我不确定您的情况,但是同一用户可以同时是客户和会计师。它与可用性有关,某些应用程序确实将这些帐户分开:双角色用户具有单独的登录名,一个登录名是accountant角色,另一个登录名是customer。对于我来说,这不是用户友好的,最好是一次登录并选择一个选项,以便在登录时在角色之间进行切换。

另一方面,如果会计师和客户根本不重叠,例如普通用户和管理员,则将它们设置为不同模型是有意义的。但是在这种情况下,他们也将需要不同的界面,就像站点管理员的管理面板和普通用户的常规UI一样。