如何使用STI迁移ActiveModel?

时间:2017-02-07 09:47:23

标签: ruby-on-rails

我的系统以前已经有产品型号,有许多现有记录,但现在我想将BaseProduct作为基本的ActiveRecord :: Base(移动一些常用的属性)并使产品和(未来)产品可以扩展它。

问题:如何迁移这些旧记录?我能想到的是:

  • rails g model BaseProduct。
  • 创建具有STI支持的产品和(未来)产品类。
  • rake task将所有旧产品表记录移动到新的BaseProduct。
  • 删除旧的Product表。

还有其他什么遗失?

1 个答案:

答案 0 :(得分:1)

不要改变你的表只引用继承类中的原始表:

class BaseProduct < ApplicationRecord
  self.table_name = "products"
end

class Product < BaseProduct
end

class FutureProduct < BaseProduct
end