2012-07-20 32 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