2

私の問題は、キャリアウェーブモデルを破壊すると次のようになることです。

Attachment.rb

mount_uploader :attachment, AttachmentUploader

データベースから削除し、リビジョンのある別のテーブルにシリアル化します。

ユーザーが削除された添付ファイルを具体化するとき、行を元に戻す必要がありますが、特定のcarrierwaveコールバックをスキップします(マウントアップローダーをスキップします)。

以下のコードはそれを行うことができますが、残念ながら、モデルからすべてのコールバックを削除するため、それらが必要です。したがって、carrierwaveアップローダーのみをスキップする必要があります。そうしないと、作成時に「無効な添付ファイル」で例外がスローされます。

  model.class.skip_callbacks do 
    model.save
  end

できますか?ありがとう!

4

1 に答える 1

3

ラムダで指定された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
于 2013-02-04T15:21:47.063 に答える