我的问题是当我销毁一些carrierwaved模型时:
Attachment.rb
mount_uploader :attachment, AttachmentUploader
我将其从数据库中删除,并将其序列化为另一个包含修订版的表。
当用户重新确认已删除的附件时,我需要将行插回但跳过特定的carrierwave回调(我想跳过挂载上传)。
下面的代码可以做到这一点,但不幸的是它从模型中删除了所有回调,我需要它们。因此,我必须仅跳过carrierwave上传器,否则在创建时会抛出“无效附件”异常。
model.class.skip_callbacks do
model.save
end
有可能吗?谢谢!
答案 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