2013-04-22 45 views
2

這裏我有兩個模型:用戶和書 用戶有一個頭像上傳,書有一個封面上傳 我已閱讀有關上傳圖像的railscast,但我不知道我應該如何處理不同類型的圖像? (在這種情況下,用戶的頭像和書的封面)在Rails中爲幾個模型使用一個圖像上傳器(carrierwave)?

我已經簽出了論壇的一些開放源代碼。它使用一個AvatarUploader和一個PhotoUploader來上傳照片。

因此,我是否應該使用一個上傳器照片和頭像(以及如何?)或者我只爲每個上傳器創建2個上傳器? 謝謝!

+0

如何處理什麼?你能解釋一下你的問題到底在哪裏嗎?做兩個不同的上傳者或使用不同的模型是沒有任何問題的。 – Pigueiras 2013-04-22 12:45:34

+0

呃.....我不確定爲兩者分別使用2個上傳者還是隻有1個上傳者。 – cqcn1991 2013-04-22 13:24:33

+0

小心一些繼承陷阱,如[this one](https://gist.github.com/rlivsey/3304402) – MegaTux 2014-07-15 12:34:19

回答

6

使用兩個單獨的上傳程序絕對沒問題,即使它們幾乎完全相同。無論如何,它們都可以延伸到CarrierWave::Uploader::Base,它只是讓你的物品變得漂亮而整齊地命名。

如果您有一些共享的功能需要在兩者中使用並且不想重複,您可以隨時編寫自己的類,以延伸CarrierWave::Uploader::Base,並從您的上傳者中繼承而來!

class MyImageUploaderBase < CarrierWave::Uploader::Base 
    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 
end 

class AvatarUploader < MyImageUploaderBase 
    ... 
end 
+1

在上傳器中使用'version'方法似乎沒有遵循繼承。例如,在'AvatarUploader'中加入'version:thumb {process:resize_and_pad => [45,45]}'[註釋SO中的註釋格式限制了我的寫作]。 @rlivsey在https://gist.github.com/rlivsey/3304402上的要點也顯示了這一點。我認爲這在'MyImageUploaderBase'中也不受尊重。在查看載波代碼時,我不明白爲什麼它不是。 – rdnewman 2014-11-18 16:42:54

相關問題