Ruby on rails 重命名单表继承rails模型类名,而不更改现有数据
我有一个Ruby on rails 重命名单表继承rails模型类名,而不更改现有数据,ruby-on-rails,rails-activerecord,single-table-inheritance,Ruby On Rails,Rails Activerecord,Single Table Inheritance,我有一个ActiveRecordSTI子类要重命名(区分大小写的更改) 但是如果我更改子类ActiveRecord的类名,则无法再实例化现有记录,因为旧类名位于基表的type列中 如何在不更改数据库中的内容的情况下更改类的名称,以便重命名的影响最小 例如: 类Uld
ActiveRecord
STI子类要重命名(区分大小写的更改)
但是如果我更改子类ActiveRecord
的类名,则无法再实例化现有记录,因为旧类名位于基表的type
列中
如何在不更改数据库中的内容的情况下更改类的名称,以便重命名的影响最小
例如:
类Uld
应成为Uld
。重命名方法需要数据库迁移
def up
组件。其中(类型:“Uld”)。全部更新(类型:“Uld”)
结束
降下
组件。其中(类型:“ULD”)。全部更新(类型:“ULD”)
结束
但是在heroku上部署时,这会引起问题,因为数据更改是第一位的,代码甚至没有可用的新类名。因此,代码库的这一部分在几分钟内不可用。对于用户甚至都不关心的更改来说,这并不好://您可以这样做:
ULD
组件/文件,该文件是ULD
的副本。也就是说,有2个组件,不要移除Uld
Uld
的地方,请确保现在提取类型为Uld
或Uld
的记录Uld
记录的地方,请创建新的Uld
记录Uld
,但也可以使用Uld
Uld
相关的所有提及/文件,然后重新部署