首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >级联删除(软删除和硬删除)红宝石

级联删除(软删除和硬删除)红宝石
EN

Stack Overflow用户
提问于 2017-10-18 23:54:39
回答 1查看 234关注 0票数 0

所以问题来了:硬删除是很明显的,你销毁了父级,而子级也应该被销毁。使用dependent: :destroy可以很好地工作,当任何一个父进程被销毁时,子进程也会被销毁。

关于软删除的混淆。如果我想软删除用户,并且为此我想更新用户deleted_at: Time.now中的一个字段。这叫做软删除,但是当我更新deleted_at字段时,我想销毁/null用户的所有关联/依赖项。

不使用任何gem怎么可能。

EN

回答 1

Stack Overflow用户

发布于 2017-10-19 03:08:47

我建议您使用gem,它将处理所有棘手的情况,而您自己的解决方案无法涵盖这些情况。

但是如果你不想在你的项目中有一个额外的库,那么你可以使用ActiveRecord回调来实现类似的东西。尽管回调通常被视为糟糕的实践,但在这种情况下,它们可能会有所帮助。

您可以使用在调用models destroy方法之前触发的before_destroy回调http://api.rubyonrails.org/v5.1/classes/ActiveRecord/Callbacks.html。在回调的主体中,你可以删除所有相关的数据。

此外,不要忘记在模型定义中覆盖destroy方法,将记录标记为已移除而不是真正的删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46814361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档