Как пропустить обратные вызовы оператора загрузки несущей при разархивировании сериализованной модели?
Моя проблема в том, что когда я уничтожаю какую-то модель с несущей
Attachment.rb
mount_uploader :attachment, AttachmentUploader
Я удаляю его из базы данных и сериализую в другую таблицу с ревизиями.
Когда пользователь исправляет удаленное вложение, мне нужно вставить строку обратно, но пропустить определенные обратные вызовы carrierwave (я думаю, пропустить загрузчик монтирования).
Код ниже может сделать это, но, к сожалению, он удаляет все обратные вызовы из модели, и они мне нужны. Поэтому я должен пропустить только загрузчик carrierwave, иначе он создает исключение с "недопустимым вложением" при создании.
model.class.skip_callbacks do
model.save
end
Это можно сделать? Спасибо!
1 ответ
Вы можете пропустить определенные обратные вызовы, используя 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