在我的模特中,我像这样使用STI
车辆型号:vehicle.rb
class Vehicle < ActiveRecord::Base
end
车型:car.rb
class Car < Vehicle
end
总线型号:bus.rb
class Bus < Vehicle
end
如果我创建了一辆汽车,我可以以某种方式将其类型改为车辆或公共汽车吗?
答案 0 :(得分:8)
要永久更改类型,请更改type
列的值。
c1 = Car.first
c1.name # BMW
c1.update_attribute(:type, "Bus")
b1 = Bus.first
b1.name # BMW
要在内存中更改对象类型而不从DB重新加载,请使用“变为,如
c1 = c1.becomes(Bus)