2016-01-23 55 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設置將以您想要的方式運行。