在Rails中克隆模型

时间:2013-06-29 13:25:18

标签: ruby-on-rails

我在Rails中有一个模型,我想用它作为另一个的基础。

例如型号:父级将是模型子级的模板。 我可以看到两种可能的选择:

(1)继承第一个模型,然后添加其他列

Class Parent < ActiveRecord::Base
Class Child < Parent

(2)复制model.rb文件并添加新功能

Class Child < ActiveRecord::Base

在这两种情况下,都会创建模型的“Rails”部分,但是数据库表呢?我可以使用创建表子作为select * from parent(其中1 = 2 )创建表,然后创建迁移以添加其他列,但它看起来不像“Rails方式”。

是否有一种基于现有表创建迁移的简便方法。还是我完全吠叫错了树?

1 个答案:

答案 0 :(得分:2)

您的(1)被称为single table inheritance(STI)。基本上,您使用一个包含父项和子项的字段的表。您还需要一个名为type的列来标识对象的类型。

如果没有更多细节,我不能说在你的情况下使用STI是个好主意,但是(2)复制model.rb肯定是不对的。