Когда я делаю POST-запрос для публикации «видения», он передает оба обязательных параметра правильно. Однако при сохранении столбец изображения остается нулевым в базе данных HEROKU и также не загружается в AWS S3.
Как мне сделать так, чтобы пользователь мог загружать локальные файлы в aws и heroku?
Таблица видений:
class CreateVisions < ActiveRecord::Migration[5.1]
def change
create_table :visions do |t|
t.string :image
t.text :description
t.timestamps
end
end
end
vision.rb
class Vision < ApplicationRecord
belongs_to :user
mount_uploader :image, ImageUploader
end
visions_controller.rb создать действие:
def create
@vision = current_user&.visions.build(vision_params)
@vision.remote_image_url = 'https://www.gstatic.com/webp/gallery3/1.sm.png'
@vision.save
render :create, status: :created
end
Я делаю свой запрос POST следующим образом (он работает, но столбец изображения сохраняется, только когда перед сохранением передается удаленный URL-адрес в visions_controller.rb
let response = await fetch('https://prana-app.herokuapp.com/v1/visions/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-User-Email': this.state.email,
'X-User-Token': this.state.accessToken
},
body: JSON.stringify({
vision: {
description: 'dsfsfdsfdsfsd',
image: this.state.uploadFile
}
})
});
setup_fog.rb
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'] || '',
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY_ID'] || '',
region: 'us-west-2'
}
config.fog_directory = 'BUCKET_NAME'
config.fog_public = false
config.fog_attributes = {
'Cache-Control' => "max-age=#{365.day.to_i}"
}
end
image_uploader.rb
include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
if Rails.env.production?
storage :fog
else
storage :file
end
# Create different versions of your uploaded files:
version :thumb do
process resize_to_fit: [50, 50]
end
version :thumb do
process resize_to_fit: [64, 64]
end
version :small do
process resize_to_fit: [200,200]
end
version :large do
process resize_to_fit: [1000,1000]
end
version :medium do
process resize_to_fit: [400,400]
end
def extension_whitelist
%w(jpg jpeg gif png)
end