【发布时间】:2015-10-13 21:45:55
【问题描述】:
按照使用 gemscarrierwave 和雾的教程,我有一个图像上传器。现在我想添加一个额外的上传器,但我很挣扎。
我已生成上传器 (rails generate uploader name)。在模型文件中,我已将上传器安装到右侧列 (mount_uploader :column_name, nameUploader)。在上传器本身中,我设置了def extension_white_list 和store_dir。我还包括(因为在教程中我做了同样的事情):
if Rails.env.production?
storage :fog
else
storage :file
end
现在我陷入困境的是我不知道在哪里设置雾的规格。也就是说,在哪里指定它应该上传到的亚马逊存储桶。在 carrier_wave 初始化程序中,我已经有了下面的代码。但是这段代码为我已经实现的上传器指定了上传到哪里。对于这个新的上传器,这些规范是不同的。我应该在哪里/如何为新上传者添加这些规范?
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY'],
:region => ENV['AWS_REGION']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
【问题讨论】:
-
图像本身不是模型,您必须在模型中使用 Uploader,如下所示:
class User < ActiveRecord::Base mount_uploader :avatar, AvatarUploader belongs_to :organization end -
我实际上有一个图像模型,它与组织模型相关联。所以
organization_id是组织模型中的列之一。在组织控制器中,new方法调用 Image 模型中的upload_file方法。后续问题基本上是如何将organization_id(控制器方法已经传递给模型方法)保存在Image模型的相应列中。我认为最好的方法是在模型方法中做到这一点。但是我到底应该在提到的模型方法中添加什么? -
谢谢@axel,我在这里发布了一个后续问题:stackoverflow.com/q/31594988/4499505
标签: ruby-on-rails ruby ruby-on-rails-4 file-upload carrierwave