【发布时间】:2016-11-25 03:03:31
【问题描述】:
ModelA 和 ModelB 之间存在多对多关系,如果关联的 ModelA 被销毁,我希望所有 ModelB 都被销毁。
所以我的model_a.rb 有一个像这样的around_destroy:
around_destroy :destroy_model_bs
def destroy_model_bs
m_bs = self.model_bs
yield
m_bs.each {|m_b| m_b.destroy }
end
但这只会破坏关联。
但是,在控制台中,如果我做同样的事情:
m_a = ModelA.find(104) # 104 being the ID
m_bs = m_a.model_bs
m_bs.each {|m_b| m_b.destroy }
这实际上销毁了与 ID 为 104 的 ModelA 关联的所有 ModelB。
为什么会这样?并且,如果可能,请告诉我一个更好的销毁所有方法(dependent: :destroy 不适用于多对多)。
【问题讨论】:
标签: ruby-on-rails many-to-many destroy