如何在取消列出序列化模型时跳过载波上传器回调?

时间:2013-02-04 15:02:49

标签: ruby-on-rails ruby upload carrierwave

我的问题是当我销毁一些carrierwaved模型时:

Attachment.rb

mount_uploader :attachment, AttachmentUploader

我将其从数据库中删除,并将其序列化为另一个包含修订版的表。

当用户重新确认已删除的附件时,我需要将行插回但跳过特定的carrierwave回调(我想跳过挂载上传)。

下面的代码可以做到这一点,但不幸的是它从模型中删除了所有回调,我需要它们。因此,我必须仅跳过carrierwave上传器,否则在创建时会抛出“无效附件”异常。

  model.class.skip_callbacks do 
    model.save
  end

有可能吗?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用lambda指定的skip_callback跳过特定的回调。将其与特定callback you are trying to avoid相结合,您应该能够实现您正在寻找的控制。

class Attachment
  mount_uploader :attachment, AttachmentUploader

  skip_callback :save, :after, :store_attachment!, if: :skip_storage?

  private

  def skip_storage?
    # some skipping logic
  end
end