Rails多表继承删除子项删除父项

时间:2016-01-22 19:34:07

标签: ruby-on-rails ruby activerecord

我使用active_record-acts_as gem来实现多表继承。我的情景:

class Vehicle < ActiveRecord::Base
   actable
end

class Plane < ActiveRecord::Base
    acts_as :Vehicle
end

class Train < ActiveRecord::Base
    acts_as :Vehicle
end

每当我创建Plane或Train的实例时,都会创建相应的Vehicle,但是,每当我删除Plane时,相应的Vehicle行都不会被删除。

是否有可能在删除子项时这样做,父行也会被删除?

2 个答案:

答案 0 :(得分:1)

来自README documentation

  

acts_as支持所有has_one个选项,默认值为:
  as: :actable, dependent: :destroy, validate: false, autosave: true

所以:

class Vehicle < ActiveRecord::Base
   actable
end

class Plane < ActiveRecord::Base
    acts_as :Vehicle, dependent: :destroy
end

class Train < ActiveRecord::Base
    acts_as :Vehicle, dependent: :destroy
end

我建议在使用之前/之后阅读gem的文档,特别是在发生问题时使用它。

答案 1 :(得分:0)

从一开始就代表我愚蠢的错误。

记录没有被删除的原因是因为我在调用Plane.delete而不是Plane.destroy。

问候。