0

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

例如 model: parent将是模型child的模板。我可以看到两种可能的选择:

(1) 从第一个模型继承,然后添加额外的列

Class Parent < ActiveRecord::Base
Class Child < Parent

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

Class Child < ActiveRecord::Base

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

有没有一种简单的方法可以基于现有表创建迁移。还是我完全叫错了树?

4

1 回答 1

2

您的 (1) 称为单表继承(STI)。基本上,您使用一张表,其中包含父项和子项的字段。您还需要一列type来识别对象的类型。

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

于 2013-06-29T13:36:21.333 回答