4

我有一个有很多实验的用户模型:

class User < ActiveRecord::Base

has_many :experiments, :dependent => :destroy

和实验模型:

class Experiment < ActiveRecord::Base

belongs_to :user
has_attached_file :thumbnail

在所有者用户被销毁后,我想在实验模型上挂钩销毁时刻。(前用户取消他的帐户)

我需要这样做以删除存储在亚马逊的 Experiment 模型的附件图像。像experiment.thumbnail.destroy

完成此操作的推荐方法是什么?

编辑

虽然我已经毫无错误地销毁了缩略图,但是文件仍然没有被删除!我仍然可以在亚马逊桶上看到它

class Experiment < ActiveRecord::Base
before_destroy :remove_attachment

def remove_attachment
    self.thumbnail.destroy
    puts self.errors.full_messages.join("\n")
    true
end

我销毁实验后,调用了remove_attachment,但是errors.full_messages 是空的!所以没有错误,但是,文件仍然没有被删除

任何的想法 ??

4

2 回答 2

4

在所有者用户被销毁后,我想在实验模型上挂钩销毁时刻。

has_many :experiments, :dependent => :destroy

已经这样做了。

要删除附件,我建议使用回调

class Experiment < ActiveRecord::Base

    before_destroy { |experiment| experiment.thumbnail.destroy }
end
于 2013-01-03T18:04:04.970 回答
0

我认为您正在寻找如下回调

before_destroy :delete_attachment_image

于 2013-01-03T18:00:16.183 回答