ruby-on-rails - 设计销毁用户在索引页面中创建错误
问题描述
当我在 Rails 上使用 Devise 删除用户时,我的本地网站出现问题。用户已正确删除,但现在,当我进入事件索引页面时,通常会列出所有事件,我收到以下消息:
nil:NilClass 的未定义方法“伪”
这是因为被删除的用户在被销毁之前已经创建了事件,但是现在应用程序找不到事件的创建者等等......
我不知道如何解决它:
- 如果我想保留他创建的内容,我该怎么办?
- 我应该同时删除用户删除的所有内容吗?
我不知道我的问题是否清楚,但我希望有人能提供帮助,谢谢!
解决方案
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
推荐阅读
- c# - 将 PowerShell 中的加密/解密函数转换为 PHP (openssl_)
- javascript - ScriptManager.RegisterStartupScript 仅在 foreach 循环中被调用一次
- reactjs - 将 div 的引用传递给同一渲染函数中的组件
- python - 检测csv中的转义字符
- javascript - Cheerio 在脚本标签中查找文本
- javascript - 在 Ruby on Rails 表单中使用 Materialize `chip` 和 `autocomplete` 和关联模型
- sql - 调用过程中的参数数量或类型错误 (PLS00306)
- powershell - 从linux执行powershell脚本到windows机器
- python - 在python中绘制旋转/下降线
- bash - 查找我的 Git Bash 执行的 PATH