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