Korzystanie spinacza, chcę, aby pobrać obraz z adresu URL jak poniżej:Spinacz: Przypisywanie obrazu programowo i ustawić jego nazwa
require 'open-uri'
user.photo = open(url)
Problem polega na tym, że ja wtedy skończyć z pliku podobnego „typu otwarty uri20110915-4852-1o7k5uw ". Czy jest jakikolwiek sposób zmienić nazwę pliku na user.photo?
Co więcej, Paperclip zapisuje moje pliki na S3, więc byłoby jeszcze lepiej, gdybym mógł ustawić nazwę pliku w początkowym zadaniu, aby obrazy zostały przesłane do prawego klawisza S3. Coś takiego:
user.photo = open(url), :filename => URI.parse(url).path
I czynię to po przypisaniu 'open (url)' do zdjęcia? Próbowałem tego z istniejącym użytkownikiem, którego zdjęcie jest już na S3. Teraz 'u.photo_file_name' zwraca nową nazwę, ale' u.photo (: original) 'nadal ma stary adres URL S3, a także' u.photo.path'. A plik na S3 nie poruszył się. –
Jeśli obraz istnieje, być może trzeba będzie wywołać "photo.reprocess!" aby Paperclip zaktualizował twój backend pamięci (S3). W przeciwnym razie powyższe działa przed pierwszym zapisaniem i powinno zostać zapisane poprawnie do S3, gdy w końcu nastąpi zapisanie. –
Pamiętaj, że czasami spinacz zmienia nazwę pliku, aby zastąpić znaki, więc dowolna ustawiona nazwa pliku musi być zgodna z tymi regułami, w przeciwnym razie może go zgubić spinacz . – James