Ruby on rails 销毁活动记录中的孤立多态关联

Ruby on rails 销毁活动记录中的孤立多态关联,ruby-on-rails,postgresql,polymorphic-associations,Ruby On Rails,Postgresql,Polymorphic Associations,我最近在Rails应用程序中使用多态关联创建了一个通知系统。在系统停止为某些用户显示通知之前,所有这些都运行良好。我意识到罪魁祸首是一个孤立的通知-其中notification.notifiable\u id返回一个不存在的用户。下面是一张图表: 用户模型: 因此,负责创建通知的用户仍有可能删除其帐户,从而使通知记录在一端孤立 问题: 1.如何删除未找到Notification.notifiable\u id的所有通知 如何防止此问题在将来破坏通知系统 在发布这篇文章之后,我意识到我误解了多态

我最近在Rails应用程序中使用多态关联创建了一个通知系统。在系统停止为某些用户显示通知之前,所有这些都运行良好。我意识到罪魁祸首是一个孤立的通知-其中notification.notifiable\u id返回一个不存在的用户。下面是一张图表:

用户模型: 因此,负责创建通知的用户仍有可能删除其帐户,从而使通知记录在一端孤立

问题: 1.如何删除未找到Notification.notifiable\u id的所有通知

  • 如何防止此问题在将来破坏通知系统
  • 在发布这篇文章之后,我意识到我误解了多态关联。实际上,我已经设置了Notification.notifiable以指向用户创建的评论,而不是用户本身

    我通过修改注释模型(以及其他充当“应报告”的模型)修复了问题2

  • 为您的数据修复

    Notification.all.each do |notification|
      notification.destroy if notification.notifiable.nil?
    end
    
  • 看起来您的
    dependent::destroy
    上缺少冒号。这将防止在销毁用户记录时正确销毁通知


  • 酷。谢谢关于解决问题2有什么想法吗?
        has_many :notifications, as: :notifiable, dependent: :destroy
    
    Notification.all.each do |notification|
      notification.destroy if notification.notifiable.nil?
    end