首页 > 解决方案 > 设计销毁用户在索引页面中创建错误

问题描述

当我在 Rails 上使用 Devise 删除用户时,我的本地网站出现问题。用户已正确删除,但现在,当我进入事件索引页面时,通常会列出所有事件,我收到以下消息:

nil:NilClass 的未定义方法“伪”

这是因为被删除的用户在被销毁之前已经创建了事件,但是现在应用程序找不到事件的创建者等等......

我不知道如何解决它:
- 如果我想保留他创建的内容,我该怎么办?
- 我应该同时删除用户删除的所有内容吗?

我不知道我的问题是否清楚,但我希望有人能提供帮助,谢谢!

标签: ruby-on-railsrubydevisedestroy

解决方案


Rails 从他们的指南中为您提供了两种选择:

https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one

has_one :credit_card, dependent: :destroy  # destroys the associated credit card
has_one :credit_card, dependent: :nullify  # updates the associated records foreign key value to NULL rather than destroying it

从评论中可以看出,第一个选项 ,dependent: :destroy将在用户被销毁时删除任何关联的内容。dependent: :nullify将内容的 user_id 设置为 null

在您的情况下,它似乎是一个用户 has_many 内容?或 has_one :content,无论哪种方式,dependent: :destroy 位都是相同的。在用户被销毁时销毁内容:

has_one :content, dependent: :destroy

或者

has_many :contents, dependent: :destroy

并保留内容但将其所有者设置为零:

has_one :content, dependent: :mullify

推荐阅读