1

我正在創建一個照片web應用程序。我可以訪問亞馬遜S3存儲桶,其中包含我創建我的應用程序所需的所有照片。到目前爲止,我已將所有設置正確設置爲AWSCarrierwave以將圖像上傳到雲。但是,我很難嘗試做相反的事情。我想從s3下載文件並在我的數據庫中創建Person對象。我構建了一個自定義rake任務,試圖完成這樣的任務。這裏是耙任務:如何使用ActiveRecord將圖像添加到Carrierwave中?

desc 'Populate database with person s3 photos' 
task migrate_s3_photos_to_db: :environment do 
    s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'], credentials: Aws::Credentials.new(ENV["AWS_SES_ACCESS_KEY"], ENV['AWS_SES_SECRET_ACCESS_Key']) 
    s3.bucket(ENV['S3_BUCKET']).objects.each do |person| 
    name = person.key.gsub('.jpg', '').gsub('_',' ') 
    email = "#{name.scan(/\w+/)[0][0].downcase}" + "#{name.scan(/\w+/)[1].downcase}" + "@gmail.com" 

    ===================Problem========================== 
    Person.create(name: name, email: email, avatar: ?????????) 
    end 
end 

上述任務的問題是,我不知道我應該放入頭像字段。我試過person.key這將導致圖像名稱的字符串(Andy Johnson.jpg)。這雖然不起作用。

我也試圖創建一個PersonAvatarUploader carrierwave提供,但我不知道如果這是要走的路。有沒有人遇到過這樣的問題?

回答