我应该创建另一个模型还是将列附加到现有模型?

时间:2013-12-20 08:28:45

标签: ruby-on-rails database-design devise

我已经通过Devise(User)生成了rails generate devise User模型,现在想想如何将它与我应用中的其他模型联系起来。

可以向其中添加其他列,例如countryuser_namelink to avatar imagePayPal email address或更好,以创建其他模型,例如Profile并通过User关系将其与belongs_to联系起来?

我需要Profile模型以供稍后在视图中使用。因此,current_user可以看到profiles其他用户并更改自己的用户。

但如果我只使用Devise'User模型(包含Profile中的列),那么当我想编辑profile信息时,我会被重定向到Devise'route { {1}}并会看到/users/edit个字段。但我不想编辑它们。我只想编辑password, email模型中的profile字段。

那么,创建另一个模型(User)或将字段附加到现有模型(Profile)是否更好?

1 个答案:

答案 0 :(得分:2)

我会说创建另一个模型对你来说是正确的方式。

通过这种方式,您可以将主要用于身份验证目的的用户模型与主要用于社交目的的配置文件数据分开。

这还允许您轻松地从数据库加载必要的数据 - 您将能够运行User.find并仅获取基本的用户身份验证数据,而无需集成选择过滤器以仅获取所需的字段。这当然更快,更友好。

此外,将来,当您想要添加与用户相关的其他属性时,更容易在他们自己的逻辑命名空间下将它们分开,因为您已经以这种方式构建了系统。