我经常看到这个代码用于一对多的模型关联:
class Order
has_many :line_items, dependent: :destroy
#...
end
我的问题是,你有没有任何你不需要的情况
指定dependent: :destroy
?这会不会使你的数据错误?
答案 0 :(得分:1)
我知道不破坏家属的最好理由是不止一个'父母'模型has_one
或has_many
孩子。例如,教育应用程序可能在家庭与家庭中的孩子之间存在has_many
关系,并且在班级和孩子之间也存在has_many
关系。如果某个课程被取消,您将不想删除已注册该课程的孩子。
我见过的每个商业应用程序都没有删除任何内容。如果帐户或订单或某物被取消,则不会被删除,而是被置于取消状态。这完全回避了这个问题:你是否通过关系删除并不重要,因为你从不删除父亲。
答案 1 :(得分:0)
对于许多情况,您确实希望在删除其关联的父级时销毁相关结果,但在许多区域中您不会例如银行交易等。例如,如果您有一个电子商务网站并拥有用户的创建帐户,那么他们肯定会有与这些帐户绑定的订单。当用户决定他们不再想要保留他们的帐户时,他们可能会删除它,但是你肯定不想破坏它的相关订单,即使这些订单“属于”帐户。删除这些订单可能会使您面临许多潜在问题。