ruby-on-rails - 如何在 Ruby on Rails 中有效地处理多个数据库表

标签 ruby-on-rails database database-design activerecord ruby-on-rails-3.1

我给自己做了一个小项目来帮助我改进我的 ruby​​ on rails 编程。到目前为止,我已经完成了完整的用户注册和身份验证以及密码重置、记住我功能和通知电子邮件。我完全明白发生了什么。

因此,我现在转到了用户帐户区域,并想对我的用户将在其上编辑个人资料的页面进行编码。我的注册表单只要求提供用户名、电子邮件和密码,因为我想快速注册。对于用户将编辑其个人资料信息的页面,它将要求他们提供以下信息:

名字 姓 出生日期 地点 它将有他们个人资料的网址 关于我 个人数据 最喜欢的东西 状态等 和他们的照片

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

我想知道为了保持井井有条最好为此创建一个单独的表,例如轮廓?或者将其中一些信息存储在数据库的用户表中是否明智,例如名字姓氏?

我正在尝试找出一种简洁的方法来执行此操作,因为稍后我需要添加更多页面,例如设置页面等。

这是我第一次使用多个表,我知道如何操作但不太确定。任何建议,例如您将如何实现这一目标的简要说明,我们将不胜感激。

问候

最佳答案

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

您是否在使用设计或类似的 gem 作为认证件?如果是,那么您可能已经根据该 gem 的要求创建了表。如果您查看关注点分离,身份验证 + 授权系统所需的任何内容几乎都包含在您现有的用户表中。我会通过询问来解决这个问题——将您的个人资料数据(特别是如果它超过几个文本字段)与该表耦合是否有任何好处?我没有看到一个特别考虑到配置文件或用户生成的永久数据不再保证只是一张图片和 2-3 个文本字段的事实。例如,在社交网站上,个人资料可以自行其是。

此外,如果您的网站起飞了会怎样。如果您有一个活跃的用户群,可以向配置文件添加/更新图片、位置信息和其他数据,您是否希望这开始影响您的身份验证表?如果您遇到资源紧缩,独立的身份验证系统可能是您最后关心的问题。但如果它已与所有与用户相关的内容相结合,则情况并非如此。

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

关于ruby-on-rails - 如何在 Ruby on Rails 中有效地处理多个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718901/

相关文章:

ruby-on-rails - rakefile 可以用来做什么?

ruby-on-rails - 如何在 ActiveAdmin 中调用普通 Controller 方法?

mysql - 最好的 JOIN 是什么? (多对多)MYSQL

java - spring-boot JPA 不自动生成表

database-design - 用户名是主键的有效候选者吗?

sql - 构建数据库表的最佳方式是什么?

mysql - 配置文件页面 View 的数据模型

ruby-on-rails - Ruby on Rails Controller 中的@@variables 是特定于用户 session 的,还是所有用户都会看到相同的值?

mysql - 如何从 1 个数据库中选择数据,插入另一个数据库并插入新数据

ruby-on-rails - 如何让 refinerycms 显示从 Amazon S3 与/system/images...上传的图像 url?