如何在Ruby on Rails中有效地使用多个数据库表

我给自己一个小项目来帮助我改进我的ruby on rails编程。 到目前为止,我已完成完整的用户注册和身份validation密码重置,记住我的function和通知电子邮件。 我完全理解发生了什么。

所以我现在已经转移到用户帐户区域,并希望对用户编辑其个人资料的页面进行编码。 我的注册表只询问用户名,电子邮件和密码,因为我想快速注册。 对于用户将编辑其个人资料信息的页面,它将询问他们以下内容:

名字姓氏出生日期的位置它将有关于我个人统计数据的个人资料以及他们的照片

他们应该能够动态更新或更改此信息。 在他们的实际个人资料页面上,它会提取他们的个人资料内容。

我想知道保持井井有条,最好是为这个例如配置文件创建一个单独的表吗? 或者将这些信息存储在数据库的users表中是否明智,例如名字姓?

我正试图找出一种干净的方法来做到这一点,因为稍后我需要添加更多页面,如设置页面等。

这是我第一次使用多个表,我知道如何做但不太确定。 任何建议,如简要说明如何实现这一点,将不胜感激。

问候

我知道我会因为过分简化主观情况而得到人们的抨击。 但有时围绕使情况变得主观的情景的公开讨论可以帮助决策。 所以,这是我的看法。

您是否正在使用设计或某些此类gem进行身份validation? 如果是,那么您可能根据该gem的要求创建了表。 如果您考虑关注点的分离,那么身份validation+授权系统所需的任何内容都包含在您现有的用户表中。 我会通过询问来接近它 – 将此配置文件数据(特别是如果它超过几个文本字段)与此表耦合是否有任何好处? 我没有看到一个特别是因为配置文件或用户生成的永久数据不再保证只是一个图片和2-3个文本字段。 例如,在社交网站上,个人资料可能会有自己的生命。

此外,如果您的网站起飞会发生什么。 如果您有一个活动用户群,可以将图片,位置信息和其他数据添加/更新到配置文件,您是否希望它开始影响您的身份validation表? 如果您遇到资源危机,独立的身份validation系统可能是您的最后一个问题。 但如果它与用户相关的所有内容相结合,则不是这样。

所以,是的,它确实取决于您的具体情况,但我希望我的上述想法可以让您清楚地了解为什么决定可能会因网站类型的不同而有所不同。 如果用户是您系统的核心,并且用户交互是配置文件的关键(例如社交网络),那么一定要考虑将这两个区域分开。 如果用户个人资料可能只是关于用户的一行,那么这不是一个大问题。 如果你纯粹是为了学习而这样做,那么请尝试两种方式,因为你将有更多的武器库来应对未来的挑战。

我认为没有必要为用户的个人资料提供单独的表格。 我这么说是因为现在用户和个人资料之间的关系是一对一的关系。 用户只有一个配置文件。 除非用户拥有多个配置文件,否则我认为您不需要为用户配置文件提供单独的表。 你可以简单地在用户表中添加额外的列来存储用户的(可选)属性。

在您的表单上,当用户尚未设置注册期间所需的属性时,您可以将它们留空。 对于已设置这些可选属性的用户,可以通过设置输入标记的value属性在编辑表单上显示它们

 

该按钮将始终进行更新并保存用户属性。