2012-07-20 33 views
1

我有以下結構:一個Fsvideo對象屬於一個用戶,並建立了外鍵關係。視頻對象上傳到Amazon S3存儲桶。下面我Fsvideo型號:CarrierWave上傳器找不到型號

class Fsvideo < ActiveRecord::Base 
    attr_accessible :user, :video 
    belongs_to :user 
    mount_uploader :video, MyVideoUploader 

下面上傳:

class MyVideoUploader < CarrierWave::Uploader::Base 

    storage :fog 
    def store_dir 
    "videos/#{model.user.id.to_s.underscore}" 
    end 
end 

問題在於,每當store_dir方法被調用,一個NoMethodError(未定義的方法「用戶爲無:NilClass)被拋出。奇怪的是,當我改變store_dire方法返回以下字符串:

"videos/#{model.class}" 

它工作正常,並將該文件上傳到S3的存儲空間,而不會出現錯誤。進入軌道控制檯,並檢查該視頻已成功安裝,我看到

Fsvideo.find(18).video.model.user.id 

將返回我正在尋找的確切性質。

我的問題基本上是,爲什麼我能夠通過控制檯訪問此屬性,但不能通過我的上傳類?

回答

0

嘗試「videos /#{model.user_id.to_s.underscore}」視頻記錄應該具有user_id作爲其屬性。

+0

感謝您的回覆。我仍然收到一個NoMethodError(未定義方法'user_id'爲nil:NilClass)。我相信問題可能在模型中沒有被訪問(解釋NilClass)。 – Christian 2012-07-20 22:44:42