什么是 "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
我正在实施一个系统,当用户删除 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