ruby-on-rails - 为什么 Rails 中的 ActiveRecord 不支持多表继承?

标签 ruby-on-rails ruby activerecord rails-activerecord

我试图实现一组我放在纸上的模型,但遇到了一个问题,我认为最好的解决方法是使用多表继承设置。然而,在谷歌搜索后我发现 ActiveRecord 不支持 MTI ......尽管有很多文章展示了如何做到这一点。这让我想知道如果没有实现我是否正确设置了我的模型。所以我的问题是为什么 Active Record 没有内置对 MTI 的支持?如果您对我的模型设置“将会”是什么样子感到好奇,我会把它留在下面。

class Player < ActiveRecord::Base; end
class CollegePlayer < Player; end
class ProPlayer < Player; end

其中玩家可以是 CollegePlayer 和 ProPlayer 之一或两者。或者在另一个例子中......

class Person < ActiveRecord::Base; end
class User < Person; end
class Player < Person; end
class Coach < Person; end

“人”可以是用户 玩家和/或教练

最佳答案

Rails 6.1+ 委托(delegate)类型

Rails 6.1 添加了一种“原生”方式来通过委托(delegate)类型实现多表继承。

请参阅 the corresponding PR了解详情。

关于ruby-on-rails - 为什么 Rails 中的 ActiveRecord 不支持多表继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848263/

相关文章:

ruby-on-rails - 精简 Ruby : update based on object attribute only if object is not nil

ruby - 关于 Ruby 面向对象设计的问题

ruby - 获取所有可能的子集 - 保持顺序

mysql - RoR : Cannot change_column in postgres, 在 MySQL 中正常(MySQL 用于开发,Postgres on Heroku)

MySQL - 如何选择具有唯一名称的行?

ruby-on-rails - 无法找到操作 'facebook' - devise/omniauth

css - capybara 如何检查给定链接的 'li' 是否具有正确的 css 类

ruby-on-rails - Rails routing with date 并且有很多

ruby-on-rails - 查找至少具有一个关联的记录,但排除任何关联都符合条件的记录

ruby-on-rails - Globalize3 订单记录按翻译属性并考虑回退