2009-12-16 90 views
0

首先,我們有這個命名空間/ sti'd結構爲我們不同類型的「媒體」使用回形針與安全和非安全的文件

Media< Ar::Base 
Media::Local < Media 
Media::Local::Image < Media::Local 
Media::Local::Csv < Media::Local 

等等等等。

這是優秀,因爲用戶可以有很多媒體,並且我們如何顯示每個媒體片段是基於類名稱和共同響應的部分。

但是如果我們有一些Csv需要安全呢?也就是說,他們不能居住在公共場合。我真的很討厭再次分支媒體和做這樣的事情的想法:

Media::Secure < Media 
Media::Secure::Image < Media::Secure 
Media::NotSecure < Media 
Media::NotSecure::Image < Media::NotSecure 

...其中安全和NotSecure必須傳遞給has_attached_file不同PARAMS。

現在有兩個類代表圖像,它使我的視圖/助手系統更復雜 - 更不用說它感覺非常呆板。

我真的很想做的是能夠改變某些地方回形針::依戀對象得到保存才得救(例如,通過foo_secure_action上傳任何東西) - 但我似乎無法使這項工作。 Paperclip :: Attachment有一個@options hash:path和:url,但是在保存前改變它們並不影響它實際設置的位置。即使這是可能的,我不知道它是否會產生進一步的後果...

我願意接受構造這些數據的其他想法,但目前我喜歡在這種情況下使用STI的想法。

回答

0

我可以用初始化器中的Paperclip.interpolates做到這一點。