我刚刚完成了本书 Agile Web Development with Rails ,第四版(http://pragprog.com/book/rails4/agile-web-development-with-rails),并需要一些帮助来理解如何创建父子关系楷模。我做了一些谷歌搜索并在StackOverflow上进行了搜索,并且总体上了解了单表继承和类表继承。
我有一堆关于档案馆藏中不同项目的元数据。大多数元数据对于所有对象是相同的,例如,登录号,标题,描述,版权等。除了公共元数据之外,还存在仅适用于某些类型的项目的元数据,例如,照片需要保持跟踪物品是彩色还是黑白;录音需要跟踪格式(CD,DAT,盒式磁带等)和持续时间;文本材料需要跟踪页数;等
Class hierarchy
Item
|
+-----------+------------+
| | |
Photo SoundRecording Text
由于我将拥有数千条记录,因此我将单表继承视为效率太低。我理解这里提到的类表继承的想法:http://martinfowler.com/eaaCatalog/classTableInheritance.html但我对如何在一个新的Ruby on Rails项目中实际实现它感到困惑。我是否将类表继承实现为多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)或我是否在错误的轨道上?
谢谢。
答案 0 :(得分:6)
是。 归结为此(在Rails 3中)
class Business < ActiveRecord::Base
belongs_to :biz, :polymorphic => true
end
class Restaurant < ActiveRecord::Base
acts_as_biz
end
这是一个关于如何做的非常好的教程。
http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/
答案 1 :(得分:0)
有一个宝石可以干净利落地完成它,它还支持rails 5.1