硬删除在rails中启用软删除的关联记录
Posted
技术标签:
【中文标题】硬删除在rails中启用软删除的关联记录【英文标题】:Hard delete the associated records for which soft delete is enabled in rails 【发布时间】:2019-08-07 20:48:33 【问题描述】:我有一个用户模型,并且没有为用户模型启用软删除。对于一个它的关联模型(has_many 关联)说帖子,启用了软删除。我想要的是在删除用户时硬删除所有相关的帖子。
在 User.rb 中
has_many :posts, dependent: :destroy
这只是软删除关联的记录。所以删除用户时会引发异常。是否有任何选项可以硬删除模型级别的关联记录?或者必须在 before_destroy 回调中做一些事情来实现这一点?
注意:已使用 paranoia gem 进行软删除
【问题讨论】:
【参考方案1】:如果你想硬删除相关的帖子,你可以使用dependent: :delete_all
。这将直接进入数据库删除记录并绕过paranoia gem注册的before_destroy
回调。
【讨论】:
抱歉,我们正在使用acts_as_paranoid gem。宝石没有这种行为。在这种情况下我是否必须使用before_destroy
回调?我检查了似乎没有这个选项的acts_as_paranoid gem。
acts_as_paranoid
也应该与:delete_all
一起使用。我刚刚检查了the source,它并没有摆弄delete_all
,除非确保默认范围没有妨碍。你有什么错误信息吗?以上是关于硬删除在rails中启用软删除的关联记录的主要内容,如果未能解决你的问题,请参考以下文章
Rails - 允许人们在记录之间添加关联,但只允许管理员删除它