论坛首页 编程语言技术论坛

在分表的情况下,ActiveRecord如何支持继承?

浏览 4390 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-28  
想实现如下的效果:Horse/Pig/Sheep均继承Animal,拥有共同的属性和关联。
class Animal<ActiveRecord::Base
    has_and_belongs_to_many : xxx
    has_many : xxx
    belong_to : xxx
end

class Horse < Animal
end

class Pig < Animal
end

class Sheep < Animal
end
......

试了一下,好像不行阿。Horse/Pig/Sheep三个类必须继承自ActiveRecord::Base才能正常使用。但我又不想把各个关系都在这几个子类里写一遍。能实现么?

   发表时间:2006-12-28  
Agile Web Development with Rails第二版,第19章。
0 请登录后投票
   发表时间:2006-12-28  
Rails实现的是单表继承,所有子类共用一个表。所以如果你的问题是每个子类用不同的表的话,那么Rails不支持,要想别的办法。

其次,你举的例子里,子类的属性和关系完全一样,完全可以用单表继承,没有必要分表。
0 请登录后投票
   发表时间:2006-12-28  
BirdGu 写道
Rails实现的是单表继承,所有子类共用一个表。所以如果你的问题是每个子类用不同的表的话,那么Rails不支持,要想别的办法。

其次,你举的例子里,子类的属性和关系完全一样,完全可以用单表继承,没有必要分表。

不完全对。Rails 1.2支持另一种异构对象聚合技术:多态关联。参考Agile Web Development with Rails第二版第18章(前面说错了,第19章是关于模型对象生命周期的)。
0 请登录后投票
   发表时间:2006-12-28  
对啊,一翻到第19章,就发现不是一回事。多谢二位。我回头把书好好看看再。
0 请登录后投票
   发表时间:2007-08-10  
关于多表继承,能否给一个例子。还有第二版的第18章是讲Controller的,是不是第17.2节Aggregation呢。

0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics