Utilizzando Paperclip, voglio catturare un'immagine da un URL simile a questo:Paperclip: assegnare un'immagine a livello di codice e impostare il suo nome
require 'open-uri'
user.photo = open(url)
Il problema è che ho poi finire con un nome di file come 'open uri20110915-4852-1o7k5uw'. C'è un modo per cambiare il nome del file su user.photo?
Come ulteriore aggiunta, Paperclip memorizza i miei file su S3, quindi sarebbe ancora meglio se potessi impostare il nome del file che voglio nell'assegnazione iniziale, in modo che le immagini vengano caricate sul tasto S3 giusto. Qualcosa di simile a questo:
user.photo = open(url), :filename => URI.parse(url).path
E lo faccio dopo aver assegnato 'open (url)' alla foto? Ho provato questo con un utente esistente la cui foto è già su S3. Ora 'u.photo_file_name' restituisce il nuovo nome, ma' u.photo (: original) 'ha ancora il vecchio URL S3, così come' u.photo.path'. E il file su S3 non si è mosso. –
Se l'immagine è esistente potrebbe essere necessario chiamare "photo.reprocess!" per fare in modo che Paperclip aggiorni il back-end di archiviazione (S3). Altrimenti, il precedente funziona prima del tuo primo salvataggio e dovrebbe salvarlo correttamente su S3 quando alla fine il salvataggio avviene –
Nota che a volte la paperclip cambia il nome del file per sostituire i caratteri, quindi qualsiasi nome di file impostato deve corrispondere a quelle regole altrimenti paperclip può perderlo . – James