2016-11-24 84 views
1

我有一個上傳(carrierewave)來保存幾個文件,但恐怕有些日子,一些文件會有相同的名稱,並會導致一個問題。此外,我希望文件夾保持組織的外表。如何獲得當前班級所屬的班級?

所以,我有第一個腳手架,「雜誌」,允許我創建一個雜誌的標題和幾個圖像。我使用的第二個腳手架「頁面」允許多上傳系統。

使用這種方法,我的模型是這樣的:

magazine.rb

has_many :pages, :inverse_of => :magazine, :dependent => :destroy 

pages.rb

belongs_to :magazine 

現在我上傳,我有如下:

def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}" 
    end 

創建這樣的文件夾:「uploads/page/image」,然後上傳其中的每個圖像,甚至認爲它是否用於其他雜誌,因此圖像混淆起來。

我的問題是:有沒有一種方法可以寫出雜誌的ID呢?這意味着要找到「網頁」類所屬的類,但是我沒有在Google上找到任何答案。

預先感謝您

回答

2

如果你有安裝在Page,你可以訪問模型的模型的自定義上傳正常屬性

PageImageUploader.rb

def store_dir 
    "uploads/magazines/#{model.magazine.id}/#{model.id}" 
end 

但是,您可以除非您的模型持久存在,否則不能訪問模型ID。解決方法可以找到here

+0

謝謝你的回答,它的效果比我想象的還要好! – Jaeger