我目前有这种设置:
:procedures, has_many => :steps
步骤与他们创建的程序相关联。目前我的方法destroy for Procedures就是这样:
def destroy
@procedure.destroy
end
是否有必要找到与此过程相关的所有步骤并调用它们的destroy方法,还是Rails会自动为我处理这个?
答案 0 :(得分:3)
您可以使用':dependent =>获取销毁中包含的相关子项。 :破坏'选项。
所以在你的情况下它会是:
has_many => :steps, :dependent => :destroy
当程序被销毁时,会破坏步骤。
你也可以使用:
has_many => :steps, :dependent => :delete_all
哪个来自rails网站
:destroy和:delete_all选项 符号是如此命名,因为它们 符合所实现的行为 通过在a上调用destroy与delete 模型对象。一个触发回调, 另一个只是生成删除 SQL语句
所以delete_all不会触发destroy回调和destroy will。