【问题标题】:Hard delete the associated records for which soft delete is enabled in rails硬删除在rails中启用软删除的关联记录
【发布时间】:2019-08-07 20:48:33
【问题描述】:

我有一个用户模型,并且没有为用户模型启用软删除。对于一个它的关联模型(has_many 关联)说帖子,启用了软删除。我想要的是在删除用户时硬删除所有相关的帖子。

在 User.rb 中

has_many :posts, dependent: :destroy

这只是软删除关联的记录。所以删除用户时会引发异常。是否有任何选项可以硬删除模型级别的关联记录?或者必须在 before_destroy 回调中做一些事情来实现这一点?

注意:已使用 paranoia gem 进行软删除

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 hard-delete


    【解决方案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,除非确保默认范围没有妨碍。你有什么错误信息吗?
    猜你喜欢
    • 2017-04-17
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2018-03-30
    • 2023-03-26
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多