【问题标题】:Rails - How to delete a belongs_to object when the parent sets the association to nil?Rails - 当父级将关联设置为 nil 时如何删除 belongs_to 对象?
【发布时间】:2013-12-28 04:48:49
【问题描述】:

我有一个合同模型,它有一个属于时间线的属性。 Timeline 是可选的,只对特定的 Contract 有意义,并且该值可以在以后创建然后删除,所以当 contract.timeline 设置为 nil 时,我需要删除 Timeline。目前,contract.timeline 可以通过控制器中的 contract.update(params) 设置为 nil,所以我得到了孤立的 Timeline 记录。当父级取消与该对象的关联时,删除时间轴的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    有一个内置的 :dependent 可以传递给 belongs_to 调用。代码看起来像:

    class Contract < ActiveRecord::Base
      belongs_to :timeline, dependent: :destroy
    end
    

    【讨论】:

    • 我假设该选项仅在您删除父级时适用。将时间线设置为零也会导致记录被删除吗?
    • 依赖: :delete 时也可以使用。但在这两种情况下,其他合同都将成为孤儿......
    【解决方案2】:

    您可以使用 before_filter 手动删除不再需要的时间线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2017-09-29
      • 2020-10-27
      相关资源
      最近更新 更多