场景:我的应用程序中有一个用户表。我还有两个用户子类,比如说贡献者和观众。每个用户组必须具有一组完全不同的属性,但它们都共享某些用户属性(登录名、密码、名称)。
使用 Ruby on Rails 实现此目的的最佳方法是什么?
- 我认为单表继承会给我留下太多空字段。
- 我认为链接三个表(用户、查看者、贡献者)效果很好,但是当我想要编辑任何信息时,我必须这样做:
@user.viewer
,虽然我很乐意能够执行@viewer
。
有什么最佳解决方案的想法吗?
最佳答案
我可能会采用三表方法。数据完整性高于代码清洁度。
如果您想让它看起来更整洁,请将虚拟属性放在查看者和贡献者模型上,使其看起来像用户属性是本地的。您可以将其作为一个模块并将其包含在 Viewer 和 Contributor 模型中。
您还可以在默认查找器上设置 :include => :user ,这样您在使用这些字段时就不会收到额外的查询。
我现在咖啡因含量很高,所以如果这没有意义,请回复:)
关于ruby-on-rails - RoR表继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/928036/