上传器:如何设置自定义文件夹名称等于用户ID?

时间:2015-07-24 14:34:20

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

我已经实施了CarrierWave上传器,并希望文件夹路径包含其所属组织的ID。

在组织控制器中:

def create
  @organization = Organization.new(new_params)
  if @organization.save
    Image.upload_file(@organization.id)
  end
end

因此控制器方法将组织的id传递给模型方法。 Image模型中的模型方法如下:

def self.upload_file(id)
  newimage = Image.new
  File.open('app/assets/emptyfile.xml') do |f|
    newimage.file_name = f    
  end
  newimage.organization_id = id
  newimage.save!
end

在图片上传器中,我指定文件夹路径:

def store_dir
  "#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

我的问题:在这个文件夹路径中,我想要包含组织的id(作为参数传递给模型方法的id)而不是model.id(这将是记录中的记录的id)图像模型而不是组织模型中记录的id)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您是否尝试使用model.organization_id

def store_dir
  "#{model.class.to_s.underscore}/#{mounted_as}/#{model.organization_id}"
end