【问题标题】:Devise destroy user create bug in index page [closed]设计销毁用户在索引页面中创建错误[关闭]
【发布时间】:2019-12-09 10:24:18
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您需要提供更多的关系上下文;用户是否有一些内容。它是如何相关的。索引页中的代码是什么?如果您在删除后在其他地方引用该用户,则会出现错误。
  • 是的,抱歉,我可以用 >> has_many 解决问题 :articles, foreign_key: 'author_id', class_name: "Article",dependent: :destroy 事实上这是因为我得到了一些 "class_name "我不考虑

标签: ruby-on-rails ruby devise destroy


【解决方案1】:

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

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

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

has_one :content, dependent: :destroy

has_many :contents, dependent: :destroy

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

has_one :content, dependent: :mullify

【讨论】:

  • 感谢您的回答!我仍然有一些仅依赖的问题::destroy,我可以用 foreign_key >> has_many 解决它:articles,foreign_key:'author_id',class_name:“Article”,依赖::destroy
猜你喜欢
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多