По умолчанию уничтожить задачу sidekiq

В моем приложении на Rails есть модель Steps, которая может иметь много изображений:

class Step < ActiveRecord::Base
     has_many :images, :dependent => :destroy
     ...

Из-за зависимого условия уничтожения, когда я удаляю шаг, он удаляет все соответствующие изображения.

Однако я бы хотел, чтобы удаление изображений происходило в фоновом режиме. Я знаю, что могу сделать это с помощью sidekiq, вызвав работника в контроллере примерно так:

    @step.images.each do |image|
      CarrierwaveImageDeleteWorker.perform_async(image.id)
    end

Но так как изображения автоматически удаляются из-за зависимого условия уничтожения, я не уверен, как я могу вызвать sidekiq worker. Как лучше всего, чтобы изображения автоматически вызывали фоновую задачу sidekiq после запуска действия уничтожения?

1 ответ

Решение

Я исправил эту проблему, переопределив метод уничтожения по умолчанию в моей модели изображений следующим образом:

  # override destroy method to put it in a background task
  class Image < ActiveRecord::Base

  def destroy
    CarrierwaveImageDeleteWorker.perform_async(self.id)
  end
Другие вопросы по тегам