我有以下结构:Fsvideo对象属于User,并且建立了外键关系。视频对象将上载到Amazon S3存储桶。我的Fsvideo模型如下:
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(未定义的方法'用户为nil:NilClass)。奇怪的是,当我更改store_dire方法以返回以下字符串时:
"videos/#{model.class}"
工作正常,文件上传到S3存储空间时没有错误。进入rails控制台并检查视频是否已成功安装,我看到了
Fsvideo.find(18).video.model.user.id
将返回我正在寻找的确切属性。
我的问题基本上是,为什么我可以通过控制台访问此属性,但不能通过我的上传器类?
答案 0 :(得分:0)
尝试“videos /#{model.user_id.to_s.underscore}”视频记录应将user_id作为其属性。