STI在继承类型之间发生变化。

时间:2011-07-29 23:34:43

标签: ruby-on-rails ruby ruby-on-rails-3

在我的模特中,我像这样使用STI

车辆型号:vehicle.rb

class Vehicle < ActiveRecord::Base
end

车型:car.rb

class Car < Vehicle
end

总线型号:bus.rb

class Bus < Vehicle
end

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

1 个答案:

答案 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)