Rails中不会删除关联记录

时间:2011-04-04 02:15:04

标签: ruby-on-rails activerecord associations

我正在尝试将一组上传的图片与帖子相关联。在我的控制器中,我使用以下代码:

image_uploads = params[:image_uploads]
iu = ImageUpload.find(image_uploads)
@post.image_uploads = iu

虽然这确实可以从@post.image_uploads访问上传的图片,但我认为它不会将这些图片与帖子相关联,因为当删除帖子时,图片上传不会被删除 - 即使我已经使用过:dependent=>:destroy他们的关系。

> Post.first.delete
=>[]
> ImageUpload.all
=> [#<ImageUpload id: 3 ...>] 

这是模特:

class Post < ActiveRecord::Base
 has_many :image_uploads, :dependent => :destroy

end

class ImageUploads < ActiveRecord::Base
 belongs_to :post

end

如何确保级联删除有效?

2 个答案:

答案 0 :(得分:5)

尝试改为:

Post.first.destroy

destroy调用定义的回调,而delete直接使用SQL删除记录而不创建AR对象。

答案 1 :(得分:0)

你所做的对我来说似乎是正确的。你有一个帖子,图片上传取决于帖子,你应该删除帖子时删除它们。我错了,但我没有看到任何东西。

然而,我看到一些可能导致严重问题的事情,它也可能是你问题的根源(它是很多人的来源)。

你有一个以S结尾的模型。不是一个好主意。帮自己一个忙,请转到ImageUpload:)