【问题标题】:Associated record is not deleted in Rails在 Rails 中关联的记录不会被删除
【发布时间】:2011-04-04 10:30:24
【问题描述】:

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

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

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

> 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

我可以做些什么来确保级联删除工作?

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

    试试吧:

    Post.first.destroy
    

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

    【讨论】:

      【解决方案2】:

      你所做的对我来说似乎是正确的。您有一个帖子的图片上传取决于该帖子,您应该在删除帖子时删除它们。我可能是错的,但我什么也没看到。

      但是,我看到一些可能导致严重问题的东西,它也可能是您的问题的根源(它是许多问题的根源)。

      您有一个以 S 结尾的模型。这不是一个好主意。帮自己一个忙,请更改为 ImageUpload :)

      【讨论】:

        猜你喜欢
        • 2017-09-23
        • 2017-04-17
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多