【问题标题】:Rails App: best way of modelling two user models (like Uber). Devise? 1 Profile model?Rails App:建模两个用户模型的最佳方式(如 Uber)。设计? 1 轮廓模型?
【发布时间】:2018-09-24 01:56:14
【问题描述】:

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

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

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

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

选项 A:

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

选项 B: 将设计与一个模型用户一起使用,然后是另一个模型配置文件,其中包含一些信息,例如列角色。

利弊会非常有帮助,因为我每次构建这样的 Rails 应用程序时都会自己提出问题。我习惯使用选项 B

谢谢。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

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

    优点是:

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

    另一方面,如果会计师和客户完全不重叠,就像普通用户和管理员一样,那么让他们采用不同的模型是有意义的。但在这种情况下,他们也需要不同的界面,与站点管理员的管理面板和普通用户的常规 UI 相同。

    【讨论】:

    • 我编辑了帖子,你说得对,我忘了说:会计师和客户他们不重叠。比如优步(客户和司机)。
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2021-06-11
    • 2011-01-25
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多