2011-12-20 10 views

Odpowiedz

3

Można zdefiniować after_save zwrotnego w modelować i usunąć zdjęcie ..

nie wiem model ale coś takiego może działać, jeśli dostosować go:

class User << ActiveRecord::Base 

    after_create :convert_file 
    after_create :delete_original_file 

    def convert_file 
    # do the things you have to do 
    end 

    def delete_original_file 
    File.delete self.original_file_path if File.exists? self.original_file_path 
    end 
end 
+0

czy możesz podać przykład pracy? –

+0

Dodano przykład – Lichtamberg

+0

Czy to działa dla Ciebie? Jeśli tak, byłoby miło, jeśli zaznaczysz moją odpowiedź, zapytaj poprawnie. – Lichtamberg

1
class FileUploader < CarrierWave::Uploader::Base 

    after :store, :delete_original_file 

    def delete_original_file(new_file) 
    File.delete path if version_name.blank? 
    end 

    include CarrierWave::RMagick 

    storage :file 
    . 
    . # other configurations 

end 
22

Miałem dwie wersje i zrozumiał, że nie ma potrzeby oryginalnego

Więc zamiast

version :thumb do 
    process :resize_to_limit => [50, 50] 
    end 

version :normal do 
    process :resize_to_limit => [300,300] 
end 

usunąłem: normalny i dodało ten

process :resize_to_limit => [300, 300] 

Teraz oryginał jest zapisany w rozmiarze muszę i nie mam trzeci niewykorzystaną obraz na serwerze

+1

Świetnie, myślę, że jest to świetne rozwiązanie, aby po prostu zrobić proces poza blokiem wersji, tak aby w ogóle nie zapisywać oryginalnej wersji, jeśli jest naprawdę duży. dziękuję – FireDragon

+1

Chciałbym dodać, że jeśli nadal chcesz wstawić '" normal_ "' w nazwie pliku przesłanego, jak to bywa w bloku 'version', możesz jawnie przypisać nazwę wersji do podstawowego programu ładującego za pomocą 'version_names <<: medium'. –

7

wszyscy! Wybrane rozwiązanie nie działa dla mnie. Moje rozwiązanie:

after :store, :remove_original_file 

    def remove_original_file(p) 
    if self.version_name.nil? 
     self.file.delete if self.file.exists? 
    end 
    end 
+1

Dziękuję, zasługujesz na ciasteczko! –

0

To trochę siekać, ale ma przewagę wydajności

my_uploader.send :store_versions!, open(my_file)