2009-09-14 56 views
2

我正在构建Rails应用程序,我希望具有用户注册/登录功能。我还需要在用户的模型中提供其他字段,例如地址(街道,城市,国家),Facebook信息,Twitter信息,上次登录时间等。我应该如何设计用户登录功能

从设计的角度来看,模型非常轻巧,并且只有用户名/密码/电子邮件信息,并将其他字段留给单独的模型(如“个人资料”),还是将这些内容组合在一起更好?

我关心的主要是表现。

感谢,

回答

1

我会说把它们放在一起。我认为如果你把这样的信息分开,你会为自己创造更多的工作而没有足够的收益来证明它的合理性。

如果您正在寻找身份验证,Authlogic可能是处理身份验证的最佳插件。它承认你感兴趣的一些领域(如上次登录等)并自动填写。一个列表在他们的网站上。

1

保持它在同一模型中,它在开始时更简单,避免过早优化,并且如果真的有必要,您可以随时引入其他模型。

1

我同意绝对保持它在一个模型。如果你以后需要扩展/从用户模型中删除,它会减少你的工作。更重要的是,如果您设计的用户模型足够好,您甚至可能不需要额外的“配置文件”模型,因为用户的大部分逻辑/描述都包含在原始用户模型中。然后,您可以简单地创建Profile或“Accounts”控制器,以显示您认为必要的用户模型的各个部分。首先决定你是否绝对需要一个“Profile”对象并从那里出发。如果没有,你仍然可以创建一个,但是需要创建另一个模型来维护。

1

此处推荐的单一模型以及使用Authlogic。梦幻般的图书馆。

1

到目前为止,我一直使用restful_authentication,只做了一些调整,到目前为止一直很好,但是我确实需要和Authlogic一起玩。

就其他人的答案而言,我可以看到他们的观点,简单性通常是非常有益的,但我不同意外面和外面的正确答案是将所有信息放在用户模型中。我会考虑一般的应用程序,总共有多少个模型,其中有多少需要地址,例如?直截了当地,我会非常想把这个地址至少改成一个单独的模型。

我个人认为,如果你能证明性能提高的话,最好从标准化表开始,然后评估非标准化。记住你可能会频繁地加载用户对象,如果你确实实现了高登录率,那么臃肿的模型可能成为改进的来源,这在后面可能比现在更难做。

与大多数情况一样,这是一种折衷,需要在每种情况下予以解答。我希望不同的见解有一些用处,我想你应该考虑硬币的另一面,希望有所帮助。

1

对同一模型的另一投票。如果你正在考虑性能,你可能会编写自己的选择查询等等,所以在我看来,你的案例中模型的瘦或胖是无关紧要的。