2010-06-04 15 views
58

Ho utilizzato la graffetta per caricare e ridimensionare automaticamente le foto nella mia app Rails e mi piace. L'unico problema è che ogni due mesi il mio pazzo manager decide che vuole una nuova dimensione per mostrare le foto. Quindi aggiungo un nuovo stile al mio modello Photo e tutto è buono per le nuove foto, ma le foto preesistenti ora sono un problema . Ora che sto iniziando ad avere più di poche foto da trattare, ho bisogno di un modo programmatico per ridimensionare le foto esistenti. Forse c'è qualche trucco a forma di graffetta per una cosa del genere? Preferirei non dover capire RMagick e scrivere una sceneggiatura me stesso se non dovessi farlo.Ridimensiona le immagini esistenti con il nuovo stile in paperclip e RMagick

+1

Nizza Domanda Caro 1 !!! –

risposta

79

Si desidera il metodo reprocess! di Paperclip :: Attachment. Vedi the docs.

class User < ActiveRecord::Base 
    has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" } 
end 

# Console... 
>> User.find_each { |u| u.avatar.reprocess! } 

Inoltre, secondo i commenti prima che il metodo reprocess!, c'è una graffetta: rinfrescare compito Rake, che potrebbe essere più facile.

+6

grazie! la graffetta: refresh rake ha funzionato benissimo – tybro0103

+0

mantenendo tale comando nei miei preferiti, grazie :) – Richlewis

+4

Ecco la documentazione per rigenerare gli stili di graffetta. https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation Il comando dovrebbe essere 'rake paperclip: refresh: YOUR_STYLE_HERE CLASS = User' – Hengjie

28

provare questo compito rake fornito da graffetta

rake paperclip:refresh:missing_styles 

Rif: https://github.com/thoughtbot/paperclip#post-processing

+5

... o farlo per un solo modello: 'rastrello paperclip: refresh: missing_styles CLASS = YourModelName' – Arcolye

+1

Non dimenticare di impostare l'ambiente rails con l'attività. 'rake paperclip: refresh: missing_styles CLASS = YourModelName RAILS_ENV = production' –

Problemi correlati