我在Rails中有一个模型,我想用它作为另一个的基础。
例如型号:父级将是模型子级的模板。 我可以看到两种可能的选择:
(1)继承第一个模型,然后添加其他列
Class Parent < ActiveRecord::Base
Class Child < Parent
(2)复制model.rb文件并添加新功能
Class Child < ActiveRecord::Base
在这两种情况下,都会创建模型的“Rails”部分,但是数据库表呢?我可以使用创建表子作为select * from parent(其中1 = 2 )创建表,然后创建迁移以添加其他列,但它看起来不像“Rails方式”。
是否有一种基于现有表创建迁移的简便方法。还是我完全吠叫错了树?
答案 0 :(得分:2)
您的(1)被称为single table inheritance(STI)。基本上,您使用一个包含父项和子项的字段的表。您还需要一个名为type
的列来标识对象的类型。
如果没有更多细节,我不能说在你的情况下使用STI是个好主意,但是(2)复制model.rb肯定是不对的。