Ruby on rails - 如何在解压缩序列化模型时跳过 carrierwave 上传程序回调



我的问题是,当我破坏一些载波模型时:

附件.rb

mount_uploader :attachment, AttachmentUploader

我将其从数据库中删除,并将其序列化到另一个带有修订的表中。

当用户将已删除的附件具体化时,我需要向后插入行,但跳过特定的载波回调(我猜跳过挂载更新器)。

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

  model.class.skip_callbacks do 
    model.save
  end

可以吗?谢谢!

您可以使用使用 lambda 指定的 skip_callback 跳过特定的回调。将其与您尝试避免的特定回调相结合,您应该能够实现您正在寻找的控制。

class Attachment
  mount_uploader :attachment, AttachmentUploader
  skip_callback :save, :after, :store_attachment!, if: :skip_storage?
  private
  def skip_storage?
    # some skipping logic
  end
end

最新更新