STI在inheritance类型之间发生变化。

在我的模型中,我使用这样的STI

车型:vehicle.rb

class Vehicle < ActiveRecord::Base end 

车型:car.rb

 class Car < Vehicle end 

总线型号:bus.rb

 class Bus < Vehicle end 

如果我创建一辆汽车,我可以以某种方式将其类型更改为车辆或公共汽车吗?

要永久更改类型,请更改type列的值。

 c1 = Car.first c1.name # BMW c1.update_attribute(:type, "Bus") b1 = Bus.first b1.name # BMW 

要在内存中更改对象类型而不从DB重新加载它,请使用“变为,如同

 c1 = c1.becomes(Bus)