Domanda

Qual è il modo corretto in Rails W CarrierWave usando Fog per eliminare/distruggere i record quando ci sono allegati/immagini mancanti?

Sto cercando di ripulire alcuni record dopo un'importazione mancante di immagini su Rackspace. Ci sono alcune immagini mancanti e pollici. Quando provo a eliminare un record ricevo un errore

Fog :: Storage :: Rackspace :: Notfound

Esiste un'impostazione di onde di carrier o nebbia per renderlo più tollerante a questo tipo di scenari?

È stato utile?

Soluzione

Ho appena incontrato questo problema e ho trovato il problema originale presentato qui: https://github.com/jnicklas/carrierwave/issues/481 e la pagina wiki che descrive la correzione qui: https://github.com/jnicklas/carrierwave/wiki/how%3a-silelly-ignore-missing-files-on-destroy-or-overwrite

Tuttavia, non ero contento della soluzione, non volevo aggiungere quei 2 metodi in tutti i miei modelli che usano un uploader. Tendo a scrivere 1 uploader di base e sottoclasse che per eventuali modifiche alle esigenze specifiche. Quindi ho scavato in questi metodi: rimuovi _#{column_name}! e rimuovi_prevely_stored _#{column_name} e trovato tema qui: https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#l204 e https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#l204

Entrambi questi metodi chiamano semplicemente Rimuovi! Sul caricatore. Quindi il modo più semplice per risolvere il problema è sovrascrivere la Rimuovi! Metodo nel caricatore. Quindi devi solo sovrascrivere un metodo e in 1 posto. Il mio sovraccarico sembra il seguente:

class CloudfilesUploader < CarrierWave::Uploader::Base
  # Override to silently ignore trying to remove missing previous file
  def remove!
    begin
      super
    rescue Fog::Storage::Rackspace::NotFound
    end
  end
end

Ciò dovrebbe risolvere i tuoi problemi quando si tenta di ricaricare un'immagine e sovrascrivere un'immagine che non esiste o quando si tenta di eliminare un'immagine che non esiste.

~ Tom

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top