我在一些插件的帮助下构建了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'. 。由于这不需要对数据库进行任何更改,因此您所有现有的代码都应继续工作。

您可以阅读 协会的选项.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top