我有一个属于Notification
的模型User
。 Notification
的属性为user_id
和notified_by_id
,其中包含唯一的User
个ID,user_id
表示正在接收通知的用户notified_by_id
引用创建通知的用户。
删除User
后,我想销毁它创建的通知以及收到的通知。在我的User
模型中,我指定了destroy依赖:
has_many :notifications, dependent: :destroy
但是,这只会销毁Notifications
与已删除的user_id
匹配的User
。已删除的User
(notified_by_id
等于User.id
的人)创建的通知不会被删除。
如何根据两个字段指定销毁依赖项?我应该使用before_destroy而不是下面的吗?
before_destroy :clean_notifications
def clean_notifications
Notification.where(notified_by_id: self.id).destroy_all
end
我可以通过这种方式解决眼前的问题,但我相信有更合适的方法。非常感谢任何指导。
答案 0 :(得分:1)
您可以在user.rb中再添加一行
has_many :incoming_notifications, class_name: "Notification",
foreign_key: "notified_by_id", dependent: :destroy