Rails 4+ 最佳实践:删除父项同时保留子项
Posted
技术标签:
【中文标题】Rails 4+ 最佳实践:删除父项同时保留子项【英文标题】:Rails 4+ Best practices: Delete parent while keeping children 【发布时间】:2015-04-18 12:51:03 【问题描述】:我想保留子记录和层次结构,即使删除了父记录。我看到两个选项:
-
保留现有父级并使用“deleted_at”字段来指示
parent 本身是不活动的,但关系仍然存在。这将导致许多有效地死掉的父记录被永久存储。嗯。
将所有被遗弃的子记录分配给通用“收集器”僵尸父记录。我更喜欢这样,但是您会丢失历史记录到子记录的原始来源。
我没有 Rails 经验,无法预见这两种方法中的哪一种是最可取的路径,或者可能有完全不同的解决方案。
SO 告诉我这似乎是一个主观问题,他们可能会关闭它。我希望不会,因为我相信其他人也有这个问题。
【问题讨论】:
你可以看看这个答案:***.com/questions/23017070/… 这也可能很有趣:***.com/questions/378331/… 谢谢大家。这些都是相关的参考资料,并且很有帮助。似乎最好的做法是使用软删除而不是硬删除。 【参考方案1】:在我看来,您基本上是在询问“软删除”功能。当我想要这种行为时,我通常会添加一个默认为true
的active
属性。我还在模型中添加了一个active
范围,这样我就可以执行Salon.active
之类的操作来方便地获取所有活动的内容。
所以我想我的答案是我会做类似 #1 的事情,我称之为软删除。想法 #2 对我来说似乎很疯狂。
【讨论】:
谢谢!看起来软删除确实是最佳实践方式。以上是关于Rails 4+ 最佳实践:删除父项同时保留子项的主要内容,如果未能解决你的问题,请参考以下文章