CarrierWave上传器无法找到型号

时间:2012-07-20 22:17:23

标签: ruby-on-rails file-upload carrierwave

我有以下结构: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

将返回我正在寻找的确切属性。

我的问题基本上是,为什么我可以通过控制台访问此属性,但不能通过我的上传器类?

1 个答案:

答案 0 :(得分:0)

尝试“videos /#{model.user_id.to_s.underscore}”视频记录应将user_id作为其属性。