什么是 "Rails Way" 在用户被删除时重新关联帖子或附加到该用户的其他对象?

What is the "Rails Way" to re-associate posts or other objects attached to a user when said user is deleted?

我正在实施一个系统,当用户删除 his/her 帐户帖子时,他们发布的帖子将重新关联到匿名帐户,因此它们仍然可以显示给我网站的其他用户。

我的站点在用户和帖子之间有 one_to_many 关联。

dependent: _______下好像没有匹配的选项可以看这里 https://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many-label-Options

我所做的(并且正在运行)是将以下代码添加到我的用户控制器内的销毁操作中

    user = User.find_by(username: params[:username])
    admin_id = User.find_by(email: 'admin_account@gmail.com').id
    user.posts.each do |post|
      post.user_id = admin_id
      post.save
    end
    user.destroy

我认为这可能是一种足够普遍的愿望,希望有一种更标准的、“最佳实践”或“Railsy”的方式来实现它,如果有的话是什么?

dependent 属性没有您要查找的选项。但是,您可以使用 before_destroy 回调来修改关联的模型。

before_destroy :modify_association

def modify_association
  associated_model.update(...)
end

您可以阅读更多相关信息here