【发布时间】:2015-01-08 19:41:23
【问题描述】:
我试图实现一组我在纸上放在一起的模型,但遇到了一个问题,我认为最好的方法是使用多表继承设置。然而,在谷歌搜索之后,我发现 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
“人”可以是User、前Player和/或Coach。
【问题讨论】:
-
我倾向于将诸如“大学球员”之类的东西视为球员所做的事情(或他们履行的角色),而不是他们身份的一部分。同样,如果你有一个人,那么“球员”和“教练”就是角色,而不是那个人的固有属性。我认为您的模型设置过于从字面上理解“是”的概念。
-
@muistooshort 您可能是对的,我只是将其作为附加信息提供。我主要是问为什么 Active Record 中没有多表继承支持。
标签: ruby-on-rails ruby activerecord rails-activerecord