私は写真のWebアプリケーションを作成しています。アプリを作成するために必要なすべての写真が入っているamazon 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
上記のタスクに問題が、私は私がアバターのフィールドに配置するようになってるかわからないんだということです。私は画像名(Andy Johnson.jpg
)の文字列になるperson.key
を試しました。しかし、これは動作しません。
私はまた、carrierwaveが提供したPersonAvatarUploader
を作成しようとしましたが、これがどうなるかわかりません。誰もこれのような問題に遭遇しましたか?