我正在努力解决以下问题:当没有孩子时(或者更准确地说最后一个孩子被摧毁),如何强迫对象销毁。我尝试了以下解决方案:
我找不到任何其他最新的解决方案。任何人都知道如何做到这一点?
答案 0 :(得分:1)
处理此问题的一种方法是在子对象的after_destroy
回调中。这是一个名为Parent和Child的两个模型的例子:
class Parent < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :parent
after_destroy: :destroy_orphaned_parent
def destroy_orphaned_parent
parent.destroy if parent.children.empty?
end
end
此解决方案适用于destroy_all
,可用于在FactoryGirl中创建没有子项的父记录。
答案 1 :(得分:0)
我建议如下: (1)子模型不能调用parent_model.destory,这是针对模型设计模式的。 (2)在父模型after_update回调中,检查children.count&gt;如果没有找到关联,则销毁。