rails :dependent=>:destroy 被忽略

Posted

技术标签:

【中文标题】rails :dependent=>:destroy 被忽略【英文标题】:rails :dependent=>:destroy being ignored 【发布时间】:2010-08-05 02:22:43 【问题描述】:

我的关联选项似乎没有兑现。

class ClassRoom < ActiveRecord::Base
  has_many :class_assignments, :dependent => :destroy
  has_many :people, :through=>:class_assignments

class Person < ActiveRecord::Base
  has_many :class_assignments, :dependent => :destroy
  has_many :class_rooms, :through=>:class_assignments

class ClassAssignment < ActiveRecord::Base
  belongs_to :person
  belongs_to :class_room

也就是说,当一个人或一个教室被删除时,连接表/模型中的记录也应该被删除。

但是,ClassRoom.last.destroy 破坏了 ClassRoom,但没有任何关联 ClassAssignments

我知道:dependent=&gt;:destroy 在使用:through 时会被忽略,但我应该可以在连接模型上使用它吧?

【问题讨论】:

【参考方案1】:

试试

  class ClassRoom < ActiveRecord::Base 
  def before_destroy
    self.class_assignments.destroy_all
  end

人也一样

【讨论】:

以上是关于rails :dependent=>:destroy 被忽略的主要内容,如果未能解决你的问题,请参考以下文章

rails dependent

使用dependent: :destroy 在rails 上不起作用

Rails 销毁所有嵌套关联

Rails 照片、用户、评论

rails清除模型的所有关系依赖关系?

Rails中with_options的生命周期。为什么不工作?