Uno dei miei post ha perso casualmente le immagini. Ho eseguito PostCustomField.where(name: Post::MISSING_UPLOADS) nella console di Rails e ho ottenuto questo:
[#<PostCustomField:0x00005636227c20a0
id: 7335,
post_id: 36,
name: "missing uploads",
value:
"[\"upload://ljcw6gjRoPMD0IB5Vcc6K23VXIA.png\",
\"upload://v6caNgjm6wDrHzN8MQdXYnlNJEs.png\",
\"upload://bn2lC9z0Xp4Fit00p6KepGMZZ2h.png\",
\"upload://omhuL50n5VfAxY8Reyf2rQFoEWb.jpeg\",
\"upload://yJCRzx9SogObwuj1En0QciZdntF.jpeg\",
\"upload://wOeXgaPEBBia8oS0xxbOr5NKNWo.gif\",
\"upload://fuXMNACp8WoEHEr3ayciiVJjmNl.png\",
\"upload://MTIX7g8Wu11qaJasGg5yGsFvJA.jpeg\",
\"upload://oKle1GsOlPD85zeHiKRdUGJCCEM.jpeg\",
\"upload://zY43AR6Xpga92HNzdEnxQRIVpYE.gif\",
\"upload://ufigIPfGEPbDInHP4co0I0YDT51.png\",
\"upload://h7A1BJjNwZZwuUTYWXCeASk7UAh.png\",
\"upload://gmFGijsek8NmtfqBwAguIgkzDFP.png\",
\"upload://qPFQBe9zvnTmOnqMhpofQF3oqCh.png\"]",
created_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00,
updated_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00>,
Dato che si tratta di sole 14 immagini in un singolo post, sono disposto a correggerle manualmente, ma non ho idea di come trovare le immagini originali nel mio bucket S3. Ho provato a cercare i nomi dei file qui, ma non ho ottenuto alcun risultato:
Il problema è che la console web di S3 sembra cercare solo nella cartella corrente. Se scendo in una cartella specifica e cerco un file che si trova al suo interno, lo trova. Se risalgo alla cartella genitore, non lo trova.
Grazie, Michael. Sarebbe utile, ma non riesco a capire come ottenere il percorso completo. Nella console di Rails posso fare questo, ma non mi restituisce il nome effettivo del file:
Dipende da molte cose, ma dato che il file risulta mancante, potrebbe comunque trovarsi nel posto sbagliato. Ora che conosci il nome del file, non è molto difficile sfogliare S3 e verificare se trovi un file corrispondente.
Potresti anche cercare un Upload nel database in cui lo SHA1 corrisponde a questa stringa e il record di upload ha un percorso. Ma ancora: se tutto fosse a posto, non staremmo discutendo di questo problema.