0

私の Rails アプリには、多くの画像を持つことができる Steps というモデルがあります。

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

依存破棄条件のため、ステップを削除すると、対応するすべての画像が削除されます。

ただし、画像の削除はバックグラウンド タスクで行いたいと考えています。次のようにコントローラーでワーカーを呼び出すことにより、sidekiqを使用してそれを実行できることを私は知っています:

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

しかし、依存破棄条件のために画像が自動的に削除されるため、sidekiq ワーカーを呼び出す方法がわかりません。 破棄アクションがトリガーされたら、画像が sidekiq バックグラウンド タスクを自動的に呼び出すようにする最善の方法は何でしょうか?

4

1 に答える 1

1

Image モデルのデフォルトの destroy メソッドを次のようにオーバーライドすることで、この問題を修正しました。

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

  def destroy
    CarrierwaveImageDeleteWorker.perform_async(self.id)
  end
于 2014-02-04T05:49:24.887 に答える