我正在通过构建一个简单的网站来学习Rails,用户可以在其中创建文章并对这些文章发表评论。我有一个列出用户最新文章和评论的视图。现在,我想添加用户“个人资料”,用户可以在其中输入位置,年龄和简短传记等信息。我想知道这个配置文件是否应该是一个单独的模型/资源(我的用户模型中已经有很多字段,因为我使用的是Authlogic及其大部分可选字段)。
使用单独资源有哪些优缺点?
答案 0 :(得分:4)
它主要归结为用户和个人资料的大小。如果用户是5个字段,而配置文件3,则没有意义。但如果用户是12个字段,而配置文件20,那么你肯定应该。
答案 1 :(得分:4)
我认为你最好放在一个单独的模型中。考虑模型如何与数据库表对应,然后考虑如何阅读应用程序支持的各种用例。
如果用户偶尔只是插入他的实际配置文件但是经常访问用户模型,那么你一定要把它作为一对一关系的单独对象。如果每次需要用户数据时都需要配置文件数据,则可能希望将它们粘贴在同一个表中。
每次展示用户时都可能需要这个位置(比如他们留下的评论),但传记应该是不同的模型?您必须弄清楚正确的细分,但一般规则是构建事物,这样您就不必立即提取未被使用的数据。
答案 2 :(得分:4)
为了清晰和简洁,我建议在用户模型中保留配置文件列。如果您发现仅使用某些字段,则只选择您需要的列:选择。
如果您后来发现由于某种原因需要单独的表(例如,一个用户可以拥有多个配置文件),那么拆分它们应该不是很多工作。
我犯了两张桌子的错误,除了额外的复杂性之外,我没有买任何东西。
答案 3 :(得分:3)
用户“拥有”您网站上的各种资源,例如评论等。如果您将个人资料与用户分开,那么它只是一个资源。用户是静态的,而配置文件会不时更改。
将其分开还可以让您轻松维护个人资料历史记录。
答案 4 :(得分:2)
我会把它分开。并非所有用户都希望填写个人资料,因此这些是位于用户表格中的空字段。这也意味着您可以更改配置文件字段,而无需更改用户模型的任何逻辑。
答案 5 :(得分:0)
取决于现有用户表的宽度。数据库通常对recird可以包含的字节数有限制。我很接近(或者如果你有很多具有空值的字段,通常可以做到这一点)限制,我会添加一个一对一关系的表,以获得更好的性能和更少的记录可能性突然无法插入,因为行大小的数据太多。如果你没有达到极限,那就加入现有的表格。