Dobrze AFAIK remove_previously_stored_files_after_update
działa tylko wtedy, gdy obiekt model jest updated
więc ustawienie go na false
nie będzie usuń starego file
podczas update
Ale w twoim przypadku trzeba zapewnić plik są nadal obecne, gdy powiązany model obiektowy jest zniszczyć
dobrze nie sądzę tam (jeśli zbadać kod here) jest dowolny mechanizm obecnie dostępny w w Carrierwave
zrobić
ale można nadpisać ten remove!
aby osiągnąć to samo myślę, że to obejmować utworzenie attr_accessor
(co jest flaga zdecydować, czy zachować plik lub usunąć)
Wewnątrz żądany model zdefiniować attr_accessor
(słownie keep_file)
iw żądanym przesyłającym zastąpić usunięcie! Metoda
class MyUploader < CarrierWave::Uploader::Base
def remove!
unless model.keep_file
super
end
end
end
i upewnić się, że ustawienie attr_accessor
dla obiektu (jeśli chcesz zachować usuniętego pliku) przed niszcząc je
Przykład
u = User.find(10)
u.keep_file = true
u.destroy
Zapewni to, że plik jest czyszczony w górę, gdy rekord zostanie usunięty z bazy danych
Daj mi znać, jeśli jest coś lepszego do zrobienia
Nadzieja ta pomoc
Dzięki Dave, Niestety, już to miałem i nie działa. Wszelkie przemyślenia na temat tego, dlaczego może się to nie udać, mam je w przesyłającym. – nodrog
@DaveNewton Nie sądzę, że to zadziała Działa tylko w przypadku aktualizacji, nie usuwając rekordu – Viren