代码之家  ›  专栏  ›  技术社区  ›  AnApprentice

如何用has_many销毁记录,:dependent=>:destroy

  •  6
  • AnApprentice  · 技术社区  · 14 年前

    所以在我的情况下,我有一个相册,里面有很多照片。

    class PhotoAlbum < ActiveRecord::Base
    has_many :photos, :dependent => :destroy
    

    当我删除相册(id=2)时,这可以很好地删除所有关联的照片,但它不会从审核日志中删除如下项目:(feed_id=2,feed_type=photoalbum)

    鉴于AuditLog表没有“photo_album_id”列,并且不能,是否有方法使用Rails设置依赖的Destory以在删除PhotoAlbum时删除AuditLog中的所有关联项?

    谢谢,我知道这个比大多数都复杂。谢谢你通读!

    1 回复  |  直到 13 年前
        1
  •  5
  •   Brett Bender    14 年前

    我想你要找的是

    belongs_to :feeded, :polymorphic => true

    在你的审计日志类中

    has_many :logs, :as => :feeded, :dependent => :destroy

    在你的相册课上。

    belongs_to 到现有的类(在插件中?).

    对于:as=>:feeded选项,我不是百分之百确定,您必须正确命名该符号,我也不确定ActiveRecord会期望什么,但是 关系将查找feed_id和feed_type,因此当“父”对象是相册时,它将正确地连接到 photo_album.id = audit_logs.feeded_id AND audit_logs.feeded_type = 'PhotoAlbum'

    你可以阅读 options for associations here .

    推荐文章