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
將返回我正在尋找的確切性質。
我的問題基本上是,爲什麼我能夠通過控制檯訪問此屬性,但不能通過我的上傳類?
感謝您的回覆。我仍然收到一個NoMethodError(未定義方法'user_id'爲nil:NilClass)。我相信問題可能在模型中沒有被訪問(解釋NilClass)。 – Christian 2012-07-20 22:44:42