我的应用程序中有这些活动记录模型
class Artist < ActiveRecord::Base
has_many :albums, :dependent => :delete_all, autosave: true
end
class Album < ActiveRecord::Base
attr_accessor :album_artist
has_many :tracks, :dependent => :delete_all, autosave: true
has_many :covers, :dependent => :delete_all, autosave: true
belongs_to :artist
end
class Track < ActiveRecord::Base
belongs_to :album
end
class Cover < ActiveRecord::Base
belongs_to :album
end
我正在尝试,在我的应用程序中,当我删除一个艺术家,他的专辑,结果,他的专辑的曲目和封面,全部被删除,在一个级联反应。
今天实施的方式,当我删除艺术家时,只删除了相册,在我的数据库中保留了孤儿记录。
我做错了吗?
答案 0 :(得分:0)
而不是:dependent => :delete_all
您需要配置:
:dependent => :destroy_all
因为delete
将直接从数据库中删除所有关联的对象而不调用它们的destroy方法(什么打破了级联)。
您可能需要阅读http://guides.rubyonrails.org/association_basics.html#belongs-to-association-reference
中的4.1.2.4