【发布时间】:2014-05-16 02:03:39
【问题描述】:
我有一个活动记录类(动物),它有一个类型列和一个性别列。理论上,我想创建多个继承自 Animal 的类:
class Animal < ActiveRecord::Base
self.inheritance_column = {‘type’, ‘gender’}
end
然后添加继承的类:
class Dog < Animal
end
class Giraffe < Animal
end
class Male < Animal
end
可以这样做吗?我知道默认情况下任何名为“type”的列都是继承列,但我想定义多个列作为继承列。不确定它是否有效,但我尝试使用上面的数组。
【问题讨论】:
-
除非我没有看到任何东西,否则拥有多个继承列并没有什么意义,因为
type列仅仅是一个鉴别器。您当然可以使用这些列执行连接。您能解释一下为什么要在 STI 中使用多个列吗? -
基本上,我希望有一个包含(并且仅处理)性别的课程,但可以包含所有类型的动物。 (我以性别和动物为例)。因此,例如,女性班级可能包括怀孕持续时间等字段。然而,所有的长颈鹿都可能包括一个像颈长这样的场。我正在使用的数据并没有那么复杂,所以我希望将所有“动物”都包含在同一个表中,但根据其性别或物种类型将某些字段设为空。加入会是更好的选择吗?
-
嗯,我明白了。是的,加入肯定是更好的选择。如果我们以面向对象的方式来考虑,动物“有”性别(即构成)。如果您愿意(如果在我之前没有其他人这样做的话),我可以很快发表一篇更好的文章来说明这一点。
标签: ruby-on-rails inheritance activerecord