Rails:dependent ::基于多个密钥销毁

时间:2017-03-14 22:35:03

标签: mysql ruby-on-rails notifications

我有一个属于Notification的模型UserNotification的属性为user_idnotified_by_id,其中包含唯一的User个ID,user_id表示正在接收通知的用户notified_by_id引用创建通知的用户。

删除User后,我想销毁它创建的通知以及收到的通知。在我的User模型中,我指定了destroy依赖:

has_many :notifications, dependent: :destroy  

但是,这只会销毁Notifications与已删除的user_id匹配的User。已删除的Usernotified_by_id等于User.id的人)创建的通知不会被删除。

如何根据两个字段指定销毁依赖项?我应该使用before_destroy而不是下面的吗?

before_destroy :clean_notifications

  def clean_notifications
    Notification.where(notified_by_id: self.id).destroy_all
  end

我可以通过这种方式解决眼前的问题,但我相信有更合适的方法。非常感谢任何指导。

1 个答案:

答案 0 :(得分:1)

您可以在user.rb中再添加一行

has_many :incoming_notifications, class_name: "Notification",
                      foreign_key: "notified_by_id", dependent: :destroy