【发布时间】:2017-02-07 21:56:59
【问题描述】:
我的系统以前已经有 Product 模型,其中包含许多现有记录,但现在我希望有一个 BaseProduct 作为基本 ActiveRecord::Base(移动一些常用属性)并使 Product 和(Future)Product 可以扩展它.
问题:如何迁移那些旧记录?我能想到的如下:
- rails g model BaseProduct.
- 创建具有 STI 支持的产品和(未来)产品类。
- rake 任务将所有旧产品表记录移至新 BaseProduct。
- 删除旧的产品表。
还有什么遗漏的吗?
【问题讨论】:
-
请详细了解
-
添加了我打算做什么的更多详细想法
-
我会说不要删除旧表重命名它,这样你就不需要移动所有记录
-
STI 是一种管理使用相同数据的不同域的方法。所以理想情况下,您不需要更改表格。你真的需要性病吗?我们正在使用它来拆分我所在的不同类型的出口。对文件要做的事情完全不同,但所有数据都是相同的。如果您不是这种情况,那么您可能不需要 STI。
-
@unflores 是的,基本上字段是一样的,我只是想使用继承来控制不同产品的不同价格等,但由于产品已经从 ActiveRecord::Base 扩展,我怎么能不接触数据库并为其提供另一个 BaseProduct?
标签: ruby-on-rails