如何挂钩销毁属于另一个模型的模型?

时间:2013-01-03 17:56:22

标签: ruby-on-rails activerecord devise ruby-on-rails-3.2 paperclip

我有一个用户模型,其中有很多实验:

class User < ActiveRecord::Base

has_many :experiments, :dependent => :destroy

和实验模型:

class Experiment < ActiveRecord::Base

belongs_to :user
has_attached_file :thumbnail

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

我需要删除实验模型的附件图像,该图像存储在亚马逊中。比如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为空!所以没有错误,但是,仍然没有删除文件

任何想法??

2 个答案:

答案 0 :(得分:4)

  

我想在实验模型之后勾解破坏时刻   所有者用户被破坏。

has_many :experiments, :dependent => :destroy

已经这样做了。

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

class Experiment < ActiveRecord::Base

    before_destroy { |experiment| experiment.thumbnail.destroy }
end

答案 1 :(得分:0)

我认为您正在寻找callback之类的:

before_destroy :delete_attachment_image