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é. P>
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. P>
J'utilise le brouillard, le Carrierwave et S3. P>
4 Réponses :
Garder des fichiers pour tous, ou certains téléchargeurs si vous souhaitez configurer que sur une base perouver la base: p>
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
Eh bien afaik mais dans votre cas, vous devez vous assurer que le fichier est toujours présent lorsque l'objet modèle associé est détruit p> eh bien je ne pense pas là-bas (si vous Examinez le code ici ) est un mécanisme actuellement disponible dans mais vous pouvez écraser le à l'intérieur de votre modèle souhaité Définissez un et dans le téléchargeur souhaité remplacer le Supprimer! Méthode p> et assurez-vous que vous définissez le Exemple p> Cela garantira que le fichier est nettoyé lorsque l'enregistrement est supprimé de la base de données p> laissez-moi savoir s'il est préférable de faire Ceci P> espère que cette aide p> p> supprimer_previosité_stortored_files_after_update_files_after_update CODE> Seulement fonctionne lorsqu'un objet de modèle est
Mise à jour code> donc le réglage sur
false code> ne supprimera pas l'ancien fichier
< / code> pendant
mise à jour code>
Carrierwave code> faire ce p>
Supprimer! code> pour obtenir la même chose, je suppose que cela implique la configuration de la configuration > attr_accessor code> (qui est le drapeau pour décider de conserver le fichier ou de la supprimer) p>
attr_accessor code> (dites keep_file) p>
attr_accessor code> pour l'objet (si vous souhaitez conserver le fichier supprimé) avant de les détruire p>
En réalité, il y a un moyen de faire cela, il vous suffit de sauter le rappel qui le supprime: par exemple p> Voir https://github.com/carrierwaveuploader/carrierwave#sskipping-acterecord-callbacks P> p>
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é: p> puis sur mon modèle j'ai ajouté: p>