什么时候ActiveRecord关系不依赖:: destroy?

时间:2016-06-07 18:54:00

标签: ruby-on-rails ruby rails-activerecord

我经常看到这个代码用于一对多的模型关联:

class Order
  has_many :line_items, dependent: :destroy
  #...
end

我的问题是,你有没有任何你不需要的情况 指定dependent: :destroy?这会不会使你的数据错误?

2 个答案:

答案 0 :(得分:1)

我知道不破坏家属的最好理由是不止一个'父母'模型has_onehas_many孩子。例如,教育应用程序可能在家庭与家庭中的孩子之间存在has_many关系,并且在班级和孩子之间也存在has_many关系。如果某个课程被取消,您将不想删除已注册该课程的孩子。

我见过的每个商业应用程序都没有删除任何内容。如果帐户或订单或某物被取消,则不会被删除,而是被置于取消状态。这完全回避了这个问题:你是否通过关系删除并不重要,因为你从不删除父亲。

答案 1 :(得分:0)

对于许多情况,您确实希望在删除其关联的父级时销毁相关结果,但在许多区域中您不会例如银行交易等。例如,如果您有一个电子商务网站并拥有用户的创建帐户,那么他们肯定会有与这些帐户绑定的订单。当用户决定他们不再想要保留他们的帐户时,他们可能会删除它,但是你肯定不想破坏它的相关订单,即使这些订单“属于”帐户。删除这些订单可能会使您面临许多潜在问题。