RoR表继承?

时间:2009-05-29 20:40:23

标签: ruby-on-rails database inheritance activerecord

场景:我的应用中有一个用户表。我还有两个用户子类,让我们说贡献者和观众。每个用户组必须具有完全不同的属性集,但它们都共享某些用户属性(登录名,密码,名称)。

使用Ruby on Rails实现此目的的最佳方法是什么?

  • 我认为单表继承会给我留下太多的空字段。
  • 我认为链接三个表(用户,观看者,贡献者)可以正常工作,但是当我想要编辑我必须做的任何信息时:@user.viewer,而我希望能够做到@viewer 1}}。

最佳解决方案的任何想法?

2 个答案:

答案 0 :(得分:2)

我可能会选择三种表格。数据完整性是代码清洁的最佳选择。

如果要使其看起来更整洁,请在Viewer和Contributor模型上放置虚拟属性,使其看起来像User属性是本地的。您可以将其作为模块并将其包含在Viewer和Contributor模型中。

您还可以设置:include => :默认查找程序上的用户,以便在使用这些字段时不会获得额外的查询。

我现在非常喜欢咖啡因,所以如果没有意义的话请回复:)

答案 1 :(得分:1)

不要破坏数据库架构,使其最适合。我喜欢三种表方法。如果你的数据库不好,应用程序将很难在以后修复问题,运行缓慢等等。