Rails CarrierWave - способен сохранять изображение удаленного URL, но не может сохранить локальный файл изображения в базе данных и AWS S3 - PullRequest
0 голосов
/ 11 января 2019

Когда я делаю 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...