WebHU - Programozási kérdések és válaszok

Rails Gemkapocs kihagyja a feltöltést, ha már van kép

Több ezer tételt próbálok importálni, és a legtöbbjük ugyanazt a képet használja. A kép feltöltése előtt szeretném ellenőrizni, hogy létezik-e már ilyen néven, hogy időt és erőforrást is spórolhassak. Tárhelyként amazon s3-at használok. Nem találok semmit a dokumentációban ezzel kapcsolatban. Tudom, hogy tudok olyasmit csinálni, mint az image.exists? de mit csináljak a modellben, hogy ne töltsem fel a képet, hanem az adatbázisban mégis mindent úgy állítsak be, hogy a meglévő képre mutasson.

Sínek 3.2.12
Gémkapocs 3.2.1

validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/gif', 'image/pjpeg']

has_attached_file :image,
                :storage => :s3,
                :s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
                :path => "images/:attachment/:style/:filename",
                :styles => { :original => '64x64', :small => '32x32' }

Válaszok:


1

Pontosan ezzel a problémával én is találkoztam már, és soha nem találtam rá teljes megoldást. Szerintem a Paperclip dizájnja miatt minden lemezhez egyedi melléklet kell.

Megpróbálhat valamit, például egy meglévő mellékletet egy másikba másolni. rekord, de ez továbbra is feltölti a „másolt” mellékletet a rekordba.

A legjobb alternatíva, amit találtam (anélkül, hogy elágaztam volna és megpróbáltam volna a Paperclip-et majmolni), az volt, hogy a csatolt fájlok feldolgozását egy háttérmunkába helyeztem át, mint például a Resque. Ez tehermentesíti aggodalmai időbeli részét. Ami az erőforrásokat illeti, az S3 meglehetősen olcsó – soha nem jártam 0,15 dollár felett az S3 példányomért, több százezer képpel, de ez egy olyan webhely, amely nem kap nagy forgalmat.

06.02.2014
  • Igen, jobban aggódtam, hogy időt takaríthatok meg az importálással, és nem lesz 15 000 ugyanaz a kép. 06.02.2014
  • Hallak téged. De a Resque-hez hasonlóra való áthelyezéssel ez a hatás kevésbé lesz látható. 06.02.2014
  • Mi a teendő, ha a mentés előtt eltávolítom a tényleges képet a folyamatból, és manuálisan frissítem az adatbázist a fájl mezőivel. Ez működne? 06.02.2014
  • Ha jól követem, amit mond, ez működhetne, de csak akkor, ha a Paperclip tiszteletben tartja a update_column-hez hasonló hívásokat, amelyek megkerülik a visszahívásokat. 06.02.2014
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..