Ruby on rails 单独使用和维护的优点/缺点是什么;帐户模型

Ruby on rails 单独使用和维护的优点/缺点是什么;帐户模型,ruby-on-rails,database-design,rails-activerecord,Ruby On Rails,Database Design,Rails Activerecord,我经常看到程序员将它们分开,例如,用户拥有一个帐户或个人资料或其他任何东西。有什么好处?将身份验证/授权与可能更容易放入用户模型的其他属性分开是否有一些安全优势 我想更一般地说,我的问题是,一对一的有什么目的 如果存在不同的、可互换的帐户类型(尽管我认为您可以只使用用户类型),或者如果一个用户有许多帐户,我可以看到其用途 我错过什么了吗?为什么不使用一种模式呢?在流量很大的网站上,它实际上可以显著提高性能 考虑一个网站,人们几乎总是登录,但很少访问他们的个人资料/帐户。每次获取用户进行身份验证时

我经常看到程序员将它们分开,例如,用户
拥有一个
帐户或个人资料或其他任何东西。有什么好处?将身份验证/授权与可能更容易放入用户模型的其他属性分开是否有一些安全优势

我想更一般地说,我的问题是,一对一的
有什么目的

如果存在不同的、可互换的帐户类型(尽管我认为您可以只使用用户类型),或者如果一个用户
有许多
帐户,我可以看到其用途


我错过什么了吗?为什么不使用一种模式呢?

在流量很大的网站上,它实际上可以显著提高性能


考虑一个网站,人们几乎总是登录,但很少访问他们的个人资料/帐户。每次获取用户进行身份验证时,您都会将所有概要文件数据移入/移出/移出内存(您可以通过告诉获取只包含某些列来解决这一问题,但与分割模型相比,这种方法维护性较差,更容易发生意外错误).

一个重要原因是最好将类分开,以使您的应用程序更易于管理。也许您的用户在注册您的服务后会填写一些个人资料信息,这样就有了一个单独的类来处理这些信息,更易于管理,而且事情也不会那么混乱

您的类应该有一个单独的职责,并且应该清楚该类做什么,并且能够完全执行它。这是SOLID design principles中的原则。您可以在此处阅读更多关于它的内容:


希望这能回答你的一些问题

以下是我可以考虑的一些优势:

  • 分离用户和配置文件使模型更干净,每个模型将只负责一件事:用户记录/验证-只对用户自己重要的事情;以及在用户页面上查看的信息的配置文件,这些信息对每个人都很重要

  • 因此,这将减少数据库的开销。您只需要在日志记录时访问/更新
    users
    表,而不需要访问/更新用户信息中仅对查看有影响的数据(可能很大)

  • 如果您有一个开发人员团队负责身份验证,另一个团队负责演示。尽可能多地分离他们正在处理的资源是个好主意。这里值得一提的是,这种分离不仅对模型有帮助,而且对控制器和视图也有帮助

  • 另一个很好的理由是当您需要为用户提供多个配置文件时。是的,如果你的应用程序是“社交”的,这是很常见的。允许用户拥有多个配置文件,每个配置文件使用特定的语言


感谢您提供有关SOLID的信息。我以前遇到过这些原则中的大多数,但还没有将它们内化到我在设计软件时有意识地思考它们的程度。我想我提出问题的原因是,这种方法似乎违反了SRP,因为与帐户分离的用户类不能完全执行其任务。但我认为,从“只有一个理由改变”的角度来看,这更有意义。