1
我正在創建一個照片web應用程序。我可以訪問亞馬遜S3存儲桶,其中包含我創建我的應用程序所需的所有照片。到目前爲止,我已將所有設置正確設置爲AWS
和Carrierwave
以將圖像上傳到雲。但是,我很難嘗試做相反的事情。我想從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提供,但我不知道如果這是要走的路。有沒有人遇到過這樣的問題?