2011-02-11 27 views
5

Ataşmanın yönettiği birkaç farklı görüntü ekiyle modelim var. Son zamanlarda, modelin davranışını değiştirdik, böylece softs silinmiş ve acts_as_paranoid kullanılarak yeniden canlandırılabiliyordu. Her şey harika çalışıyor, ancak modeli sildiğimizde, ataç ekleri de siliyor.Paperclip'in acts_as_paranoid modelindeki ekleri silmesini nasıl sağlayabilirim?

Ataşma dokümanlarını ve kodu inceledim ve bunu aşmanın bariz bir yolunu göremiyorum. Ataşmanın modeldeki geri aramaları görmezden gelmesini ve ekleri saklamayı ihmal etmesini söylemek isterim.

cevap

7

Paperclip artık preserve_files seçeneğine sahiptir. Geçersiz kılma artık gerekli olmamalıdır.

bir aksam Yumuşak Sil için

Dosya Koruma yumuşak silinmiş modelleri ile güzel oynamak için ekleri korumak için kullanılabilir. (Acts_as_paranoid, paranoya, vs.)

has_attached_file :some_attachment, { 
    :preserve_files => "true", 
} 

Bu model yok edilir, nesne daha sonra geri edildiğinde hala mevcut olacak şekilde, yokedilmekten gelen some_attachment önleyecektir.

https://github.com/thoughtbot/paperclip#file-preservation-for-soft-delete

+0

Müthiş! Bunu güncellediğiniz için teşekkürler (ve geri dönüp görmek için o kadar uzun sürdüğüm için özür dilerim). –

+0

Paperclip, bu yapılandırma seçeneğiyle bile, kaydın tüm önemli eklenti özelliklerini hala geçersiz kıldığını fark eden var mı? Bu nedenle, geri yükleme işlemi için 'deleted_at' özniteliğinin temizlenmesi yeterli değildir çünkü tüm ek öznitelikleri artık 'nil'. –

2

Çılgın, sorduktan hemen sonra kendi sorunuzun cevabını kaç kez buluyorsunuz? Başka birinin aynı sorunu olması durumunda onu buraya bırakıyorum, ya da belki birinin bunun için daha iyi bir çözümü var. Benim için çalışılan şey, paperclip'in önceki_destroy geri aramasına yanıt vermek için kullandığı yöntemi geçersiz kılmaktı. Bunu koduma bıraktım ve şimdi ekleri koruyorum, böylece modeli daha sonra geri alırsam orada olurlar.

protected 

    def destroy_attached_files 
    logger.error "-------------- This is me NOT destroying my attachments" 
    end 
İlgili konular