ruby-on-rails - RoR表继承?

标签 ruby-on-rails database inheritance activerecord

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

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

  • 我认为单表继承会给我留下太多空字段。
  • 我认为链接三个表(用户、查看者、贡献者)效果很好,但是当我想要编辑任何信息时,我必须这样做:@user.viewer,虽然我很乐意能够执行@viewer

有什么最佳解决方案的想法吗?

最佳答案

我可能会采用三表方法。数据完整性高于代码清洁度。

如果您想让它看起来更整洁,请将虚拟属性放在查看者和贡献者模型上,使其看起来像用户属性是本地的。您可以将其作为一个模块并将其包含在 Viewer 和 Contributor 模型中。

您还可以在默认查找器上设置 :include => :user ,这样您在使用这些字段时就不会收到额外的查询。

我现在咖啡因含量很高,所以如果这没有意义,请回复:)

关于ruby-on-rails - RoR表继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/928036/

相关文章:

mysql - Ruby/Rails 使用 MySQL 中的计算列对范围内的对象进行计数

ruby-on-rails - 在无前端应用程序中使用 Cucumber 测试 RESTful API

mysql - 在 MySQL 5.0 中从转储文件创建数据库

php - Mysqli从表错误获取值

c++ - 派生类的成员函数

android - Ruby on Rails REST API 与可离线工作的 Android 客户端

ruby-on-rails - 使用 Ruby on Rails 缓存登录表单

sql - 重复的外键约束 - 支持或反对的原因

c++ - 我怎样才能从模板派生两次,并让子类交互?

c++ - gcc4.9.2的std::vector的libstdc++实现继承自_Vector_base(非虚拟析构函数)。为什么这样可以?