2016-01-23 63 views
1

如果这个问题有明显的答案,我很抱歉,我有些生锈的铁轨。如何使用Carrierwave下载和存储远程图像URL

一些背景:我正在构建一个Rails API,它应该可以抓取食谱,存储它们,并将它们提供给我的前端Ember应用程序。到目前为止,一切似乎都很顺利,除非我一直陷在图像上。由于这些图像非常大,我想下载图像并进行处理,然后将它们上传到S3。为了实现这一点,我认为carrierwave可能会做到这一点,但我似乎无法为它提供远程URL。下面是我在哪里至今:

#image.rb 
class Image < ActiveRecord::Base 
mount_uploader :photos, PhotoUploader 

belongs_to :imageable, polymorphic: true 
end 

#recipe.rb 
class Recipe < ActiveRecord::Base 
belongs_to :blog 
has_many :images, as: :imageable 
has_and_belongs_to_many :ingredients 
end 

class PhotoUploader < CarrierWave::Uploader::Base 
... 

在我的rails控制台我可以做这样的事情

Recipe.first.images => []

但我无法使用图像URL从我的控制台填充图像数组。我如何提供carrierwave远程图像URL并将它们存储在S3上?

回答

2

您可以通过将值传递给远程字段名称来完成此操作。

在您的例子这将是remote_photos_url

所以,当你犯了一个新的图像的代码是这样的:

Image.new remote_photos_url: 'http://www.domain.com/path-to-image', recipe_id: n 

Here is a link to the docs

这时只要你的S3是设置与您的CarrierWave Upload设置将以您想要的方式运行。

相关问题