11
votes

Je voudrais arrêter la suppression d'un fichier

Je voudrais configurer un téléchargeur particulier de sorte que lorsque l'objet modèle associé est détruit, le fichier sur Amazon S3 n'est pas supprimé.

La raison en est que mon enregistrement de modèle de téléchargement bien que détruit est toujours référencé dans une deuxième table d'audit.

J'utilise le brouillard, le Carrierwave et S3.


0 commentaires

4 Réponses :


10
votes

Garder des fichiers pour tous, ou certains téléchargeurs xxx

si vous souhaitez configurer que sur une base perouver la base: xxx


2 commentaires

Merci Dave, malheureusement, j'ai déjà eu ceci, et cela ne fonctionne pas. Toute réflexion sur la raison pour laquelle cela pourrait échouer, je l'ai dans le téléchargeur.


@Davenewton je ne pense pas que cela fonctionnera, cela ne fonctionnera que dans le cas de la mise à jour ne supprime pas le record



11
votes

Eh bien afaik supprimer_previosité_stortored_files_after_update_files_after_update Seulement fonctionne lorsqu'un objet de modèle est Mise à jour donc le réglage sur false ne supprimera pas l'ancien fichier < / code> pendant mise à jour

mais dans votre cas, vous devez vous assurer que le fichier est toujours présent lorsque l'objet modèle associé est détruit

eh bien je ne pense pas là-bas (si vous Examinez le code ici ) est un mécanisme actuellement disponible dans Carrierwave faire ce

mais vous pouvez écraser le Supprimer! pour obtenir la même chose, je suppose que cela implique la configuration de la configuration > attr_accessor (qui est le drapeau pour décider de conserver le fichier ou de la supprimer)

à l'intérieur de votre modèle souhaité Définissez un attr_accessor (dites keep_file)

et dans le téléchargeur souhaité remplacer le Supprimer! Méthode xxx

et assurez-vous que vous définissez le attr_accessor pour l'objet (si vous souhaitez conserver le fichier supprimé) avant de les détruire

Exemple xxx

Cela garantira que le fichier est nettoyé lorsque l'enregistrement est supprimé de la base de données

laissez-moi savoir s'il est préférable de faire Ceci

espère que cette aide


0 commentaires

14
votes

En réalité, il y a un moyen de faire cela, il vous suffit de sauter le rappel qui le supprime: xxx

par exemple xxx

Voir https://github.com/carrierwaveuploader/carrierwave#sskipping-acterecord-callbacks


0 commentaires

0
votes

J'ai eu un cas où j'avais besoin de mon uploader pour persister les fichiers non seulement sur le téléchargement d'un nouveau fichier, mais également sur la suppression du record lui-même. J'ai constaté qu'un mélange de ce que Dave Newton et Mkk a suggéré ci-dessus fonctionnant parfaitement:

dans mon uploader j'ai ajouté: xxx

puis sur mon modèle j'ai ajouté: xxx


0 commentaires