如何在Rails中实现类表继承?

use*_*119 14 ruby-on-rails class-table-inheritance

我刚刚完成了使用Rails的Agile Web Development,第四版(http://pragprog.com/book/rails4/agile-web-development-with-rails)这本书,并且需要一些帮助来理解如何创建模型之间的亲子关系.我做了一些谷歌搜索并在StackOverflow上进行了搜索,并且总体上了解了单表继承和类表继承.

我有一堆关于档案馆藏中不同项目的元数据.大多数元数据对于所有对象都是相同的,例如,登录号,标题,描述,版权等.除了公共元数据之外,还存在仅适用于某些类型的项目的元数据,例如,照片需要保持跟踪物品是彩色还是黑白; 录音需要跟踪格式(CD,DAT,盒式磁带等)和持续时间; 文本材料需要跟踪页数; 等等

       Class hierarchy

            Item
              |
  +-----------+------------+
  |           |            |
Photo   SoundRecording    Text
Run Code Online (Sandbox Code Playgroud)

由于我将拥有数千条记录,因此我将单表继承视为效率太低.我理解这里提到的类表继承的想法:http://martinfowler.com/eaaCatalog/classTableInheritance.html但我对如何在新的Ruby on Rails项目中实际实现它感到困惑.我是否将类表继承实现为多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)或我是否在错误的轨道上?

谢谢.

Eas*_*one 6

是.归结为这个(在Rails 3中)

class Business < ActiveRecord::Base
  belongs_to  :biz, :polymorphic => true
end

class Restaurant < ActiveRecord::Base
  acts_as_biz
end
Run Code Online (Sandbox Code Playgroud)

这是一个非常好的教程,如何做到这一点.

http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/