如何用has_many销毁记录,:依赖=>:销毁
-
28-09-2019 - |
题
我在一些插件的帮助下构建了Rail 3 AuditLog,该插件将数据存储在带有以下字段的识别字段中(feeded_id,feeded_type)
因此,就我而言,我有一个光album,可以拥有_many照片。
class PhotoAlbum < ActiveRecord::Base
has_many :photos, :dependent => :destroy
当我删除Photoalbum(ID = 2)时,这很好地删除了所有相关的照片,但是它不会删除像这样的审计中的项目:( feeded_id = 2,feeded_type = photoalbum)
鉴于AuditLog表没有“ photo_album_id”列,并且不能,有没有办法设置带有导轨的依赖性>命令以删除photeAlbum时删除Teh Auditlog中的所有相关项目?
谢谢,我知道这比大多数人都要复杂一些。感谢您阅读!
解决方案
我认为您正在寻找的是
belongs_to :feeded, :polymorphic => true
在您的审核日志课中,
has_many :logs, :as => :feeded, :dependent => :destroy
在您的Photoalbum课程中。
如果您没有代表审核日志的课程,则应该能够添加 belongs_to
到现有类(也许在您的插件中?)。
我不确定100%的确定:as =>:feeded选项,您必须正确命名该符号,我不确定ActivereCord会期望什么,但是 belongs_to
关系将寻找feeded_id和feeded_type,因此,当“父”对象是照片时,它将正确地加入 photo_album.id = audit_logs.feeded_id AND audit_logs.feeded_type = 'PhotoAlbum'
. 。由于这不需要对数据库进行任何更改,因此您所有现有的代码都应继续工作。
您可以阅读 协会的选项.